Fino ad oggi, io (implicitamente) ho assunto che quando producevo un metodo di istanza senza parametro (sovrascritto) BigInteger.ToString()
, la stringa di restituzione conterrebbe la rappresentazione decimale completa ed esatta del mio intero "grande".In .NET, la stringa restituita da BigInteger.ToString() riflette la precisione completa di BigInteger?
Ma the MSDN doc page ho letto:.
"Nella maggior parte dei casi, il metodo ToString supporta 50 cifre decimali di precisione Cioè, se il valore BigInteger ha più di 50 cifre, solo la 50 cifre più significative vengono mantenute nella stringa di output, tutte le altre cifre vengono sostituite con zeri.Tuttavia, BigInteger supporta lo specificatore di formato standard "R", che è destinato ai valori numerici di andata e ritorno. ToString (String) metodo con l' stringa di formato "R" conserva tutta BigInteger valore e può quindi essere analizzato con il TryParse metodo Parse o per ripristinare il valore originale senza alcuna perdita di dati". _
Tuttavia, non sono stato in grado di trovare un esempio in cui myBigInt.ToString()
differisce da myBigInt.ToString("R")
. L'esempio Remarks della pagina precedente non fornisce, come affermato, un esempio, nella mia versione del framework (.NET 4.0 SP1). (Anche "G"
e "R"
sembra essere equivalente per BigInteger
.)
E 'lecito ritenere che il paramterless ToString()
dà l'espansione decimale pieno di numero intero? Hanno cambiato il comportamento del framework o il codice di esempio sopra menzionato è sempre stato errato?
Nota: mi mostra SO this "similar question" 2984184 dopo che ho scritto questo, ma io sono ancora presentando la mia domanda, perché la risposta di 2.984.184 realtà non claryfy come i parametri zero ToString()
opere.
EDIT BY MYSELF:
E 'stato un po' di me incosequent per collegare la ToString(String)
sovraccarico su MSDN, quando la mia domanda è (soprattutto) sulla ToString()
sovraccarico. Quindi vedi anche MSDN on BigInteger.ToString()
che menziona il limite di 50 cifre, ma non fornisce un esempio con più di 50 cifre.
"così si può vedere che in questa implementazione, ToString() è equivalente a ToString (" R ")" - Vale la pena ricordare: ciò non smentisce la promessa dei documenti che ToString() è equivalente a ToString ("G "): è ancora vero se ToString (" G ") e ToString (" R ") hanno lo stesso effetto. – hvd
.net 3.5 ha la propria implementazione di ToString. Quindi questo potrebbe essere nuovo a .net 4.0. In realtà, non c'è nemmeno una classe BigNumber in 3.5. – hatchet
Nevermind - BigNumber non è pubblico in 3.5 (è interno). Mi chiedo se si tratti di una documentazione di questa precedente implementazione interna. – hatchet