c#将双精度浮点数转换为浮点数,如何去除第七位后的垃圾

本文关键字:七位 转换 双精度浮点数 浮点数 何去 | 更新日期: 2023-09-27 18:13:00

我在数据库中有一个名为利润的字段。在我的应用中,我计算利润:

myFunds.Profit = float.Parse(Math.Round(myFunds.Profit.Value * myFunds.Stake / myFunds.Stake, 3, MidpointRounding.AwayFromZero).ToString());

myFunds的类型。利润是多少?数学。将返回值舍入为double,并将其强制转换为float。在数据库中,利润保存为5,40000009536743。我知道float比double精度低。在小数点后七位之后的数字有可能被删减吗?

谢谢

c#将双精度浮点数转换为浮点数,如何去除第七位后的垃圾

基本上不应该使用二进制浮点数作为货币。使用保留十进制数字的东西,而不是二进制表示。这不是"第七个数字之后有垃圾"的问题——这是使用错误的表示开始的问题。

有关更多信息,请参阅我关于二进制浮点数和十进制浮点数的文章。

这是真的重要的是,你理解的差异,为什么它是根本不能接受使用二进制浮点的精确值的货币值不能用二进制浮点表示。不要试图回避您在floatdouble中遇到的问题,而是转向适当的数据类型。短期内可能会有更多的工作,但从长远来看,它将远远更可取。