EDYCJA: Wskazano, że te podejścia mają wartość zamiast skracania. Naprawdę trudno jest obciąć wartość double
, ponieważ nie jest to właściwa baza ... ale obcięcie wartości decimal
jest bardziej realistyczne.
Należy użyć odpowiedniego ciągu formatów: custom lub standard, np.
string x = d.ToString("0.00");
lub
string x = d.ToString("F2");
Warto mieć świadomość, że wartość dwukrotnie sam nie „wie” ile miejsc po przecinku ma. Tylko wtedy, gdy przekształcisz go w ciąg znaków, naprawdę ma to sens. Użycie Math.Round
otrzyma najbliższą podwójną wartość do x.xx00000
(jeśli widzisz co mam na myśli), ale prawie na pewno nie będzie to dokładna wartość x.xx00000
ze względu na sposób działania binarnych typów zmiennoprzecinkowych.
Jeśli potrzebujesz tego do wszystkiego, co jest inne niż formatowanie ciągów, powinieneś rozważyć użycie zamiast tego decimal
. Co właściwie oznacza wartość?
Mam artykuły na temat binary floating point i decimal floating point w .NET, które mogą okazać się przydatne.
jaki powinien być wynik, gdy dajesz 12.12890? – rahul
Co ** phoenix ** pyta: czy chcesz zaokrąglić go do 12.13, czy po prostu przyciąć do 12.12 ...? – awe
Yes @awe. To dobrze – rahul