用C#转换大美元价值

时间:2011-09-29 20:11:05

标签: c# floating-point

我有一个应用程序可以管理项目成本从一百万到几十亿美元。最初,用户输入项目的估计值:称为“拨款金额”。

问题是:
原始值未按预期转换。一些例子包括:

他们输入:111,222,333
它转换为:111,222,336

他们输入:111,222,333,444
它转换为:111,222,333,440

问题出现在这里:
在以下代码行转换时出现问题......

project.AppropriationAmount = (!String.IsNullOrEmpty(txtAppropriationDollars.Text)) ? Convert.ToSingle(txtAppropriationDollars.Text) : 0;

备注:
project.AppropriationAmountfloat

感谢您的帮助!

1 个答案:

答案 0 :(得分:9)

您应该使用decimal代替float来赚钱。

来自MSDN

  

decimal关键字表示128位数据类型。相比   浮点类型,十进制类型具有更高的精度和a   较小的范围,这使其适合金融和货币   计算

使用Convert.ToDecimal(..)并分配给decimal变量,可以为您的示例生成预期的(正确的)结果。