我有一个应用程序可以管理项目成本从一百万到几十亿美元。最初,用户输入项目的估计值:称为“拨款金额”。
问题是:
原始值未按预期转换。一些例子包括:
他们输入: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.AppropriationAmount
是float
。
感谢您的帮助!
答案 0 :(得分:9)
您应该使用decimal
代替float
来赚钱。
来自MSDN:
decimal关键字表示128位数据类型。相比 浮点类型,十进制类型具有更高的精度和a 较小的范围,这使其适合金融和货币 计算
使用Convert.ToDecimal(..)
并分配给decimal
变量,可以为您的示例生成预期的(正确的)结果。