问题标签 [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 投票
21 回答
713820 浏览

sql - 在 SQL Server 中截断(不是四舍五入)小数位

我正在尝试确定在不四舍五入的情况下截断或删除 SQL 中多余小数位的最佳方法。例如:

这将自动舍@value入为123.46,这在大多数情况下都很好。但是,对于这个项目,我不需要那个。有没有一种简单的方法来截断我不需要的小数?我知道我可以使用该left()函数并将其转换回小数。还有其他方法吗?

0 投票
20 回答
248111 浏览

python - round() 似乎没有正确舍入

round()函数的文档说明您将其传递给一个数字,并将小数点后的位置进行四舍五入。因此它应该这样做:

但是,实际上,很好的旧浮点怪异现象逐渐出现,你会得到:

出于 UI 的目的,我需要显示5.6. 我在 Internet 上浏览了一下,发现了一些文档,这取决于我对 Python 的实现。不幸的是,这发生在我的 Windows 开发机器和我尝试过的每台 Linux 服务器上。另请参见此处

没有创建我自己的圆形库,有什么办法解决这个问题吗?

0 投票
13 回答
32953 浏览

excel - MS Access 中的舍入

在 VBA Access 中进行舍入的最佳方法是什么?

我目前的方法使用 Excel 方法

但我正在寻找一种不依赖 Excel 的方法。

0 投票
37 回答
1913107 浏览

java - 如何在Java中将数字四舍五入到n位小数

我想要的是一种将双精度数转换为使用半数方法四舍五入的字符串的方法 - 即,如果要四舍五入的小数是 5,它总是向上舍入到下一个数字。这是大多数人在大多数情况下所期望的标准舍入方法。

我也希望只显示有效数字 - 即不应该有任何尾随零。

我知道这样做的一种方法是使用以下String.format方法:

返回:

这很好,但是它总是显示带有 5 位小数的数字,即使它们不重要:

返回:

另一种方法是使用DecimalFormatter

返回:

但是,如您所见,这使用了半偶数舍入。也就是说,如果前一个数字是偶数,它将向下舍入。我想要的是这样的:

在 Java 中实现这一目标的最佳方法是什么?

0 投票
14 回答
362912 浏览

perl - 你如何在 Perl 中对浮点数进行四舍五入?

如何将十进制数(浮点数)四舍五入到最接近的整数?

例如

0 投票
13 回答
185834 浏览

java - 如何解决 Java Rounding Double 问题

似乎减法正在触发某种问题,并且结果值是错误的。

78.75 = 787.5 * 10.0/100d

708.75 = 787.5 - 78.75

877.8499999999999 = 1586.6 - 708.75

得到的预期值为 877.85。

应该怎么做才能确保正确计算?

0 投票
18 回答
41138 浏览

algorithm - 四舍五入到任意数量的有效数字

如何将任何数字(不仅仅是大于 0 的整数)四舍五入为 N 个有效数字?

例如,如果我想四舍五入到三位有效数字,我正在寻找一个可以采用的公式:

1,239,451 并返回 1,240,000

12.1257 并返回 12.1

.0681 并返回 .0681

5 并返回 5

自然,该算法不应该被硬编码为仅处理 3 的 N,尽管这将是一个开始。

0 投票
6 回答
4156 浏览

.net - 使用 == 运算符比较两个舍入浮点数是否正确?

还是有可能操作会失败?

谢谢。

我选择了错误的术语,我真正的意思是四舍五入到 0,而不是截断。

关键是,我需要比较两个双精度的整数部分,我只是将它们转换为 int,然后使用 ==,但是,正如有人在我之前的一个问题中指出的那样,如果double 不能放入整数。

所以问题是'使用 == 运算符比较之前舍入为 0 的两个双精度值是否正确,或者我应该坚持转换为 int 方法并捕获可能的异常?

0 投票
8 回答
93366 浏览

javascript - 如何在 JavaScript 中对数字进行四舍五入?

在做一个项目时,我遇到了一个由前雇员创建的 JS 脚本,它基本上以以下形式创建报告

等等

问题是这些值有时可以是浮点数(具有不同的精度)、整数,甚至是2.20011E+17. 我要输出的是纯整数。不过,我不太了解 JavaScript。我将如何编写一种方法来获取这些有时浮点数并使它们成为整数?

0 投票
3 回答
3867 浏览

c# - 在 C# 中匹配 FORTRAN 舍入

FORTRAN 提供了几个函数来将双精度数转换为整数值。用于截断/舍入的方法不同。我正在转换使用这些的复杂科学算法。

根据 FORTRAN 文档:
aint(x)返回 x 和 0 之间的整数值,最接近 x。
anint(x)返回最接近 x 的整数值,除非中途情况舍入到幅度较大的整数值。
nint(x)将 x 转换为 int 格式,舍入到最接近的 int 值,除非中途情况舍入到幅度较大的 int 值。

有没有人在 C# 中实现了这些? 把它做好可能会很棘手。

(int)x 似乎匹配 aint()
Convert.ToInt32(x) 不匹配上述任何一个。
Trunc(x) 与上述任何一个都不匹配。
Round(x) 可能匹配 anint 或 nint。

anint 和 nint 的区别似乎在于返回类型,其中 anint 返回一个双精度值,但 nint 返回一个整数。两者都被使用(实际样本):
双精度 A、B、C、D、E、F、G
... 此处设置的值 ...
F = ANINT(AB) + ANINT(CD) + ANINT(B+DE)
G = NINT(F) + 1D0;
也许 FORTRAN 专家可以帮助澄清为什么作者选择使用两者(我假设这是故意的)。