问题标签 [rounding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3054 浏览

c# - 大数四舍五入 [c#]

我在这里遇到了一些奇怪的问题。我有一个数据库表,它在列上存储了巨大的价值。我的应用程序 (C#) 正在读取这个值并保持双精度类型。此应用程序会将相同的值插入到另一个表中。注意:我没有对从第一个表中读取的值进行任何计算/处理。它仅用于更新第二个表。

这里的问题是,第二个表的值与第一个表中的值略有不同。当我保持双重类型时,看起来数字正在四舍五入。

这是一个值的示例。

原值:18014398509481984

值复制到新表:18014398509482000

这些值看起来不同,但实际上两者都是相同的。我用18014398509481984 - 18014398509482000作为搜索词进行了谷歌搜索,它返回了结果0,这意味着两者都是相同的。

问题

1 - 如果两者相同,为什么第二个值看起来不同?我可以看到1984变成了2000

2 - 为什么会发生转换?

3 - 我怎样才能避免这种类型的转换?

任何帮助都会很棒!

0 投票
5 回答
55552 浏览

vb.net - 在 Visual Basic 中向下舍入一个数字

我有一个 Visual Basic 应用程序需要向下舍入一个数字,例如,2.556 将变为 2.55 而不是 2.26。

我可以使用一个函数来做到这一点,使用这个函数从小数点开始去除超过 2 个字符:

有没有更好的功能来做到这一点?

0 投票
2 回答
22873 浏览

c++ - 为什么 round() 和 ceil() 不返回整数?

偶尔,我发现自己对一些数字进行了四舍五入,而且我总是必须将结果转换为整数:

为什么所有舍入函数 ( ceil(), floor()) 返回一个浮点数,而不是整数?我觉得这很不直观,并且希望有一些解释!

0 投票
6 回答
56877 浏览

bash - 如何在浮点数上使用 expr?

我知道这是一个非常愚蠢的问题,但我不知道如何在 bash 中做到这一点:

应该是,66.67但 expr 说的是0,因为它不支持浮动。Linux 中的什么命令可以代替 expr 并做这个等式?

0 投票
5 回答
4900 浏览

oracle - 甲骨文银行家规则

为什么 Oracle 不使用银行家规则(四舍五入法)?

0 投票
4 回答
454801 浏览

python - 将浮点数转换为字符串而不四舍五入

我正在制作一个程序,由于不需要解释的原因,需要将浮点数转换为字符串以使用 len() 进行计数。但是, str(float(x)) 导致 x 在转换为字符串时被四舍五入,这会将整个事情扔掉。有谁知道修复它?如果您想知道,这是正在使用的代码:

0 投票
3 回答
932 浏览

opengl - OpenGL:不能被2整除时扭曲的纹理

我有一个使用 OpenGL 进行显示的游戏引擎。我为它编写了一个小菜单,然后我在渲染文本后发现了一些奇怪的东西。 http://img43.imageshack.us/i/garbagen.png/

如您所见,字体有点不可读,但较低的部分(如“测试”)看起来符合预期。似乎屏幕上的位置会影响可读性,因为边缘会被切割。字体是 9x5,我将这个值除以 2 以获得宽度/高度并从中心渲染对象。因此,对于 4.5x2.5 像素(我对简单矩形的 x、y、宽度和高度使用浮点数),如果在 x.5 左右以外的地方渲染纹理就会混乱。但是,它目前仅在两台计算机上执行此操作,但我不希望出现此错误,因为它会使文本不可读。我可以使它成为 4.55x2.55(通过在除以 2 时增加一点额外的大小),然后它在所有机器上都能充分呈现(或者至少在有问题的两台机器上不会经常发生),但我担心这个是一个太粗暴的hack,不能完全解决问题,它可能会放大文本,使字体看起来……“胖”。所以我的问题是......有什么办法可以防止这种情况发生,而不是将这些值交换为整数?(相比之下,我需要浮动提供的细微差别)。我可以找出哪些宽度/高度可以被 2 整除,而那些不能被 2 整除的则以不同的方式处理它们?如果确实是显卡问题,是否有可能绕过它?对不起,如果这个问题有什么不足之处,我不会经常求助于互联网,我也没有编码研究。我很乐意提供任何可能需要的代码行或代码块。并且不将这些值交换为整数?(相比之下,我需要浮动提供的细微差别)。我可以找出哪些宽度/高度可以被 2 整除,而那些不能被 2 整除的则以不同的方式处理它们?如果确实是显卡问题,是否有可能绕过它?对不起,如果这个问题有什么不足之处,我不会经常求助于互联网,我也没有编码研究。我很乐意提供任何可能需要的代码行或代码块。并且不将这些值交换为整数?(相比之下,我需要浮动提供的细微差别)。我可以找出哪些宽度/高度可以被 2 整除,而那些不能被 2 整除的则以不同的方式处理它们?如果确实是显卡问题,是否有可能绕过它?对不起,如果这个问题有什么不足之处,我不会经常求助于互联网,我也没有编码研究。我很乐意提供任何可能需要的代码行或代码块。

0 投票
4 回答
6740 浏览

c++ - c ++将数字从零四舍五入

嗨,我想在 C++ 中舍入这样的双数(远离零):

这样做的有效方法是什么?

0 投票
4 回答
656 浏览

c - 不精确表示的舍入浮点数

对于某些财务计算,我们遇到浮点数舍入问题。

基本上,我们希望将像 1000000000.555 这样的货币金额四舍五入到小数点后两位。但是,这个数字的浮点表示是 1000000000.5549999,因此我们将向下舍入到 1000000000.55,而不是正确的 1000000000.56。

有什么方法可以安全地解决这个问题吗?到目前为止,我们唯一想到的就是始终在舍入操作之前将最小的可表示浮点数添加到金额中,但我们不知道这是否在所有情况下都是安全的。

代码是用 C 编写的,需要在 windows32/64/linux/solaris 上运行,所以很遗憾,我们无法访问像 .net 中的 Decimal 数据类型这样的好东西。

任何输入都会有所帮助。

谢谢,里卡德

0 投票
1 回答
1293 浏览

javascript - javascript奇怪的舍入问题

我有以下用于舍入的 javascript 函数:

在大多数情况下,它都能很好地完成工作,但在极少数情况下,返回的值会多出一位,始终是 5。

numberofdigits = 3 的结果示例列表:

5.329 - 5.081 - 4.271 - 3.271 - 2.1525 - 2.1375 - 2.1225 - 1.997 - 2.044 - 2.031 - 2.028

有人可以解释一下吗?或者也许为我提供一个更好的舍入函数来防止这个问题?