C#转换双浮,如何清除排在第七位后的垃圾
我有一个叫做利润的数据库。 在我的应用程序中,我计算利润:C#转换双浮,如何清除排在第七位后的垃圾,c#,floating-point,double,C#,Floating Point,Double,我有一个叫做利润的数据库。 在我的应用程序中,我计算利润: myFunds.Profit = float.Parse(Math.Round(myFunds.Profit.Value * myFunds.Stake / myFunds.Stake, 3, MidpointRounding.AwayFromZero).ToString()); myFunds的类型。利润为int?。数学。将返回值取整为双精度,并将其转换为浮动。 在数据库中,利润保存为54000009536743。 我知道float
myFunds.Profit = float.Parse(Math.Round(myFunds.Profit.Value * myFunds.Stake / myFunds.Stake, 3, MidpointRounding.AwayFromZero).ToString());
myFunds的类型。利润为int?。数学。将返回值取整为双精度,并将其转换为浮动。
在数据库中,利润保存为54000009536743。
我知道float的精度比double低。是否有可能在小数点后第七位削减数字
谢谢基本上,您不应该使用二进制浮点作为货币。使用保留十进制数字而不是二进制表示的东西。这不是“第七位数后有垃圾”的问题,而是使用错误的表示开始的问题 有关更多信息,请参阅我在和上的文章
理解这些差异非常重要,以及为什么对货币值使用二进制浮点数是不可接受的,因为货币值的精确值不能用二进制浮点数表示。不要试图回避您在使用
float
和double
时遇到的问题-请改为使用适当的数据类型。短期内可能会有更多的工作,但从长远来看,这将是非常可取的。好的,但记忆中的位置会怎样呢。Float是4字节,double是8字节。使用double可以在memory@Robert:购买更多内存通常比丢失信息更好:)