Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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#_Decimal_Rounding Error - Fatal编程技术网

C# 使用小数估计计算误差

C# 使用小数估计计算误差,c#,decimal,rounding-error,C#,Decimal,Rounding Error,我们目前正在开发的.NET应用程序中使用System.Decimals来表示数字。我知道小数是为了减少舍入误差而设计的,但我也知道某些数字,例如1/3,不能表示为十进制,因此某些计算会有很小的舍入误差。我相信这一错误的程度将是非常小和微不足道的,但一位同事不同意。因此,我希望能够在我们的应用程序中估计由于舍入而产生的误差的数量级。例如,我们正在计算“交易”的运行总数,每天将进行大约10000次“交易”,大约有5-10次十进制运算(add、sub、div、mul等)来计算收到的每一笔交易的运行总数

我们目前正在开发的.NET应用程序中使用System.Decimals来表示数字。我知道小数是为了减少舍入误差而设计的,但我也知道某些数字,例如1/3,不能表示为十进制,因此某些计算会有很小的舍入误差。我相信这一错误的程度将是非常小和微不足道的,但一位同事不同意。因此,我希望能够在我们的应用程序中估计由于舍入而产生的误差的数量级。例如,我们正在计算“交易”的运行总数,每天将进行大约10000次“交易”,大约有5-10次十进制运算(add、sub、div、mul等)来计算收到的每一笔交易的运行总数。新的运行总数的顺序是什么?一个带有计算过程的答案也很好,因此我可以在将来自己学习如何这样做。

详细介绍了在给定浮点类型精度的情况下,如何估计浮点运算序列结果中的误差。不过,我还没有在任何实际的程序中尝试过这一点,所以我很想知道它是否可行。

小数最多可以代表28位小数-它适用于货币操作。如果你对你的运算很精明,你会限制除法和乘法,或者实施反措施以消除除法/乘法的不精确性(使用舍入+减法或其他方法)。直接货币值没有太多的小数空间,因此加/减是安全的。有些疯狂的划分(如果是累积的)会导致损失,无论数据类型使用多宽(如果不使用反度量)。有一件事我一直不确定,我知道一个小数最多可以代表28位小数,但这会随着小数点的魔力增加而改变吗?i、 e.一个值为一百万的小数点在小数点后还能有28位吗?是的-小数点是固定点,因此大小数字的精度是相同的。仔细阅读文档后,我发现它是一个浮点,因此一个更大的数字没有更小的小数位数多。嗯?“小数是一个浮点值,由一个符号、一个数值(其中每个数字的范围为0到9)和一个比例因子组成,该比例因子指示分隔数值的整数部分和小数部分的浮点位置。”如果有人能帮我把它翻译成一个音节的单词就好了,但我想这是正确的答案。