Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#转换双浮,如何清除排在第七位后的垃圾_C#_Floating Point_Double - Fatal编程技术网

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:购买更多内存通常比丢失信息更好:)