0

値を通貨にフォーマットするときに発生する丸めの問題に気づきました。特定のしきい値を超えると、10進値が変化します。

ここに3つのサンプルがあります-最初のサンプルは成功しますが、初期値が増加するにつれて他の2つは成功しません。

1)

float value = 10000.25;

value_as_string = value .ToString( "0,0.00", CultureInfo.InvariantCulture );

--> "10000.25";  // great

2)

float value = 100000.25;

value_as_string = value .ToString( "0,0.00", CultureInfo.InvariantCulture );

--> "100,000.20"  // why 20 cents?

3)

float value = 1000000.25;

value_as_string = value .ToString( "0,0.00", CultureInfo.InvariantCulture );

--> "1,000,000.00"  // where did my 25 cents go?

これを回避する方法があるかどうか教えてください。ありがとう。

4

1 に答える 1

2

float値型のために精度が失われます。decimal次のタイプを使用します。

decimal valueDec = 1000000.25M;

string valueDec_string = valueDec.ToString("0,0.00", System.Globalization.CultureInfo.InvariantCulture );

出力:

1,000,000.25

于 2013-02-19T20:16:24.187 に答える