我在这里找到了这个公式:
podrucje[i][j] = floorf(podrucje[i][j] * 100 + 0.5)/100;
其中podrucje[][]
是浮点矩阵。 floorf
会返回正确的值(desired * 100
),但问题在于/100
。例如,如果我有49.599998
,floorf
会返回4960.000
,除以100
后,结果将再次为49.599998
。
问题出在哪里?
我知道我可以在打印时对其进行舍入,但是我将在Excel中使用此矩阵,将其转换为范围,因此我无法影响表示。
答案 0 :(得分:3)
大多数十进制数字不能完全表示为浮点数。
你可能需要将它们存储为整数,或者在转换为人类可见的东西时进行舍入(即打印出数字)。
如果您想使用该数字进行进一步计算并需要先进行舍入,请使用不同的表示法。
答案 1 :(得分:1)
这是浮点运算表示的一个基本问题,它不是基数10!您可以打印一个基数为10,但舍入到小数点后2位。
跨越边界安全地导出数字的标准安全方法是通过纯文本ascii而不是二进制文件。