请考虑以下代码:
0.1 + 0.2 == 0.3 -> false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2 -> 0.30000000000000004
Run Code Online (Sandbox Code Playgroud)
为什么会出现这些不准确之处?
我有以下虚拟测试脚本:
function test() {
var x = 0.1 * 0.2;
document.write(x);
}
test();
Run Code Online (Sandbox Code Playgroud)
这将打印结果0.020000000000000004
,只应打印0.02
(如果您使用计算器).据我所知,这是由于浮点乘法精度的误差.
有没有人有一个很好的解决方案,以便在这种情况下,我得到正确的结果0.02
?我知道有类似的功能toFixed
或舍入将是另一种可能性,但我想真正打印整个数字没有任何切割和舍入.只是想知道你们其中一个人是否有一些漂亮,优雅的解决方案.
当然,否则我会转到大约10位左右.
我今天正在查看一个在线游戏物理库,并遇到了~~运算符.我知道单个〜是一个按位NOT,是否会使~~不是NOT,它会返回相同的值,不是吗?
我的一位同事偶然发现了一种方法来使用按位或者:
var a = 13.6 | 0; //a == 13
Run Code Online (Sandbox Code Playgroud)
我们在谈论它并想知道一些事情.
Math.floor
吗?也许它快一点?(双关语不打算)谢谢.
我有一个非常大的数字:5799218898.并希望将其右移到13位.
所以,windows-calculator或python给了我:
5799218898 >> 13 | 100010100100001110011111100001 >> 13 70791 | 10001010010000111
正如所料.
但是Javascript:
5799218898 >> 13 | 100010100100001110011111100001 >> 13 183624 | 101100110101001000
我认为这是因为javascript中的内部整数表示,但找不到任何相关内容.
我有这个JS代码:
var propertyYield = annualRent / propertyValue * 100.0;
Run Code Online (Sandbox Code Playgroud)
在特定场景中,结果为 4.999。
所以当我这样做时
propertyYield.toFixed(2)
我得到的财产收益率为 5.00。
我想要实现的是实际得到 4.99 而不是 5.00 四舍五入到小数点后两位。
我怎样才能做到这一点?
可能的重复:
在 jquery 中截断十进制数而不是四舍五入
我的变量中有类似5.3777777
, 的值。4.6666666
Y
我怎样才能截断它,以便它用 JavaScript 显示 5.3 或 5.6?
提前致谢!