Tag: 舍入

C#中的双倍与十进制舍入

为什么: double dividend = 1.0; double divisor = 3.0; Console.WriteLine(dividend / divisor * divisor); 输出1.0, 但: decimal dividend = 1; decimal divisor = 3; Console.WriteLine(dividend / divisor * divisor); 输出0.9999999999999999999999999999 ? 我知道1/3不能精确计算,所以必须有一些舍入。 但是为什么Double将答案舍入1.0,但是Decimal没有? 另外,为什么双倍计算1.0 / 3.0为0.33333333333333331? 如果使用舍入,那么最后3个舍入为0,为什么1?

如何将十进制值舍入到最接近的0.05值?

有没有办法将十进制值四舍五入到.Net中最近的0.05值? 例如: 7.125 – > 7.15 6.66 – > 6.7 如果它现在可用,任何人都可以提供算法吗?

将双精度数舍入到以位数给出的较低精度的有效方法

在C#中,我希望将双精度舍入到较低的精度,以便我可以将它们存储在关联数组中的不同大小的存储桶中。 与通常的舍入不同,我想要舍入到一些重要的位。 因此,大数字的绝对值会比小数字更改,但它们往往会按比例改变。 因此,如果我想要舍入到10个二进制数字,我会找到十个最高有效位,并将所有低位都清零,可能会添加一个小数字进行舍入。 我更喜欢将“中途”数字四舍五入。 如果它是整数类型,这将是一个可能的算法: 1. Find: zero-based index of the most significant binary digit set H. 2. Compute: B = H – P, where P is the number of significant digits of precision to round and B is the binary digit to start rounding, where B = 0 is the ones place, B […]