【发布时间】:2019-03-14 19:09:34
【问题描述】:
我真的不明白为什么,但我的双数组有时只是围绕我的变量,即使它不应该。奇怪的是,它有时只会这样做,正如您在图片中看到的那样。所有的数组元素都应该有这么长的精度。变量“WertunterschiedPerSec”每次也都处于这个精度,但是,如果我将它添加到 Zwischenwerte[i],那么它有时会变得不那么精确,即使我没有在任何地方做任何事情。有人知道为什么吗?
【问题讨论】:
-
double和float是浮点近似值,因此对于无法精确表示的值会产生诸如此类的舍入误差。decimal我相信更准确,这就是为什么在处理货币价值时强烈推荐它。这个小的舍入误差会给您带来问题吗?是这样吗,是否可以通过对这些数字进行任何检查来解决误差范围? -
实数有无数个。
double表示的数字数量有限。结果,并非每个实数都可以用双精度数表示(而且,因为它是二进制的,所以规则与您的“我理解十进制数”的想法不同)。例如,在十进制土地中,您如何表示 1/3?看看:stackoverflow.com/questions/618535/… -
float和double类型是二进制浮点类型,它们不能准确表示大多数十进制数。如果值的十进制表示很重要,请不要使用它们。为此,请改用decimal。
标签: c# floating-point double