浮点数格式化问题

时间:2013-02-19 19:38:04

标签: c# string-formatting tostring

我注意到当我将一个值格式化为货币时出现的舍入问题 - 一旦我通过一个特定的句号,小数值就会改变。

这里有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?

如果有解决方法,请告诉我。感谢。

1 个答案:

答案 0 :(得分:2)

由于float值类型,您将失去精确度。使用decimal类型:

decimal valueDec = 1000000.25M;

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

输出:

  

1,000,000.25