我想在JavaScript中将浮点数转换为整数。实际上,我想知道如何进行两种标准转换:通过截断和舍入。而且高效,而不是通过转换为字符串和解析。
当前回答
比特移位0,等于除以1
// >> or >>>
2.0 >> 0; // 2
2.0 >>> 0; // 2
其他回答
如果查看JavaScript中的本机Math对象,您将得到一系列处理数字和值等的函数。。。
基本上,你想做的是非常简单的,并且是JavaScript中的原生代码。。。
假设您有以下数字:
const myValue = 56.4534931;
现在,如果您想将其舍入到最接近的数字,只需执行以下操作:
const rounded = Math.floor(myValue);
你会得到:
56
如果要将其舍入到最接近的数字,只需执行以下操作:
const roundedUp = Math.ceil(myValue);
你会得到:
57
此外,Math.round将其舍入为更高或更低的数字取决于哪个更接近flot数。
此外,还可以在浮点数后面使用~~,这会将浮点数转换为整数。
你可以像~~myValue一样使用它。。。
如果您想要向下四舍五入的答案:
var intvalue = Math.floor( floatvalue );
var integer = Math.floor(4.56);
Answer = 4
如果要向上舍入:
var intvalue = Math.ceil( floatvalue );
Answeer would be = 5
这里有很多建议。按位OR似乎是迄今为止最简单的。下面是另一个简短的解决方案,它也可以使用模运算符处理负数。它可能比按位OR更容易理解:
intval = floatval - floatval%1;
此方法也适用于“|0”、“~~”或“>>0”都不能正常工作的高值数字:
> n=4294967295;
> n|0
-1
> ~~n
-1
> n>>0
-1
> n-n%1
4294967295
函数返回小于或等于给定数字的最大整数。console.log('数学楼层:',数学楼层(3.5));console.log('数学楼层:',数学楼层(-3.5));Math.ceil()函数始终将数字舍入到下一个最大整数。console.log('Math.ceil:',Math.ceil(3.5));console.log('Math.ceil:',Math.ceil(-3.5));函数的作用是返回舍入到最接近整数的数值。console.log('Math.round:',Math.round(3.5));console.log('Math.round:',Math.round(-3.5));函数的作用是通过删除任何小数来返回数字的整数部分。console.log('Math.trunc:',Math.ttrunc(3.5));console.log('Math.trunc:',Math.ttrunc(-3.5));
您可以使用parseInt方法进行无舍入。由于0x(十六进制)和0(八进制)前缀选项,请小心用户输入。
var intValue = parseInt(floatValue, 10);
编辑:作为警告(来自注释部分),请注意某些数值将被转换为指数形式,如1e21,这将导致“1”的十进制表示不正确
推荐文章
- 如何在Typescript中解析JSON字符串
- Javascript reduce()在对象
- 在angularJS中& vs @和=的区别是什么
- 错误"Uncaught SyntaxError:意外的标记与JSON.parse"
- JavaScript中的querySelector和querySelectorAll vs getElementsByClassName和getElementById
- 给一个数字加上st, nd, rd和th(序数)后缀
- 如何以编程方式触发引导模式?
- setTimeout带引号和不带括号的区别
- 在JS的Chrome CPU配置文件中,'self'和'total'之间的差异
- 用javascript检查输入字符串中是否包含数字
- 如何使用JavaScript分割逗号分隔字符串?
- 在Javascript中~~(“双波浪号”)做什么?
- 谷歌chrome扩展::console.log()从后台页面?
- 未捕获的SyntaxError:
- [].slice的解释。调用javascript?