用C#转换大美元价值

Pri*_*ERO 0 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;
Run Code Online (Sandbox Code Playgroud)

注意:
project.AppropriationAmount是一个float.

谢谢您的帮助!

Bro*_*ass 9

你应该使用decimal而不是float钱.

来自MSDN:

decimal关键字表示128位数据类型.与浮点类型相比,十进制类型具有更高的精度和更小的范围,这使其适用于财务和货币计算.

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