0

我在这里找到了这个公式:

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 中使用此矩阵,将其转换为范围,因此我无法影响表示。

4

2 回答 2

3

大多数十进制数不能完全表示为浮点数。

您可能需要将它们存储为整数,或者在转换为人类可见的东西时进行舍入(即打印出数字)。

如果您想使用该数字进行进一步计算并需要先对其进行四舍五入,请使用不同的表示形式。

于 2012-06-13T10:37:01.017 回答
1

这是浮点运算表示的一个基本问题,它不是以 10 为底的!不过,您可以打印以 10 为底的四舍五入到小数点后 2 位。

跨边界安全导出数字的标准安全方法是通过纯文本 ascii 而不是二进制。

于 2012-06-13T10:36:15.053 回答