如何在 JavaScript 中对数字进行四舍五入?
形式创建一个报告
Name : Value
Name2 : Value2
在做一个项目时,我遇到了一个由前雇员创建的 JS 脚本,它基本上以等的
。问题是这些值有时可以是浮点数(具有不同的精度)、整数,甚至是格式为 2.20011E+17
。 我想要输出的是纯整数。 不过,我对 JavaScript 了解不多。 我将如何编写一个方法来获取这些有时浮点数并使它们成为整数?
While working on a project, I came across a JS-script created by a former employee that basically creates a report in the form of
Name : Value
Name2 : Value2
etc.
The peoblem is that the values can sometimes be floats (with different precision), integers, or even in the form 2.20011E+17
. What I want to output are pure integers. I don't know a lot of JavaScript, though. How would I go about writing a method that takes these sometimes-floats and makes them integers?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
如果需要四舍五入到一定位数,请使用以下函数
If you need to round to a certain number of digits use the following function
您必须将输入转换为数字,然后将它们舍入:
或者作为单行:
使用不同的值进行测试:
You hav to convert your input into a number and then round them:
Or as a one liner:
Testing with different values:
根据 ECMAScript 规范,JavaScript 中的数字仅由双精度 64 位格式 IEEE 754。因此 JavaScript 中并不存在真正的整数类型。
关于这些数字的四舍五入,您可以通过多种方法来实现。 Math 对象为我们提供了三种可以使用的舍入方法:
Math.round() 最常用,它返回四舍五入的值到最接近的整数。 然后是 Math.floor() 返回最大的小于或等于数字的整数。 最后,我们有 Math.ceil() 函数,它返回大于或等于数字的最小整数。
还有 toFixed() 返回一个表示使用定点表示法的数字。
Ps.:Math.round() 方法中没有没有第二个参数。 toFixed()不是 IE 特定的,它的也在 ECMAScript 规范内
According to the ECMAScript specification, numbers in JavaScript are represented only by the double-precision 64-bit format IEEE 754. Hence there is not really an integer type in JavaScript.
Regarding the rounding of these numbers, there are a number of ways you can achieve this. The Math object gives us three rounding methods wich we can use:
The Math.round() is most commonly used, it returns the value rounded to the nearest integer. Then there is the Math.floor() wich returns the largest integer less than or equal to a number. Lastly we have the Math.ceil() function that returns the smallest integer greater than or equal to a number.
There is also the toFixed() that returns a string representing the number using fixed-point notation.
Ps.: There is no 2nd argument in the Math.round() method. The toFixed() is not IE specific, its within the ECMAScript specification aswell
您还可以使用
toFixed(x)
或toPrecision(x)
,其中 x 是位数。所有主流浏览器都支持这两种方法
You can also use
toFixed(x)
ortoPrecision(x)
where x is the number of digits.Both these methods are supported in all major browsers
您可以使用 Math.round() 将数字四舍五入到最接近的整数。
另外,您可以使用 parseInt() 和 parseFloat() 将变量转换为某种类型,在本例中为整数和浮点数。
You can use Math.round() for rounding numbers to the nearest integer.
Also, you can use parseInt() and parseFloat() to cast a variable to a certain type, in this case integer and floating point.
一个非常好的舍入近似:
只有在某些情况下,当数字的小数部分的长度很长时,它才会不正确。
A very good approximation for rounding:
Only in some cases when the length of the decimal part of the number is very long will it be incorrect.
您还可以使用
value.toFixed(n)
函数。它将值四舍五入到下一个带有“n”位小数的值。
You can also use the
value.toFixed(n)
function.It will round the value to next value with 'n' decimals.
Math.floor(19.5) = 19 也应该有效。
Math.floor(19.5) = 19 should also work.