请考虑以下代码:
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)
为什么会出现这些不准确之处?
是否有一个用于JavaScript或内置的bignum库,我可以包括
<script type="text/javascript" src="the_bignum_library.js"></script>
Run Code Online (Sandbox Code Playgroud)
?
我认为我的用户更愿意在网页中输入数字并等待7秒才能获得结果,而不是下载可执行文件并点击一堆"此可执行文件可能会损害您的计算机"警告屏幕进行安装.
我考虑过自己的http://github.com/silentmatt/javascript-biginteger或http://www.mainebrook.com/john/fun/euler.html.或者你会建议从JavaScript调用Java bignum库,如apfloat?
Javascript具有parseInt()可以帮助将二进制形式的整数转换为其十进制等效值的函数:
parseInt("101", 2) // 5
Run Code Online (Sandbox Code Playgroud)
但是,我需要将二进制分数转换为其十进制等效值,如:
0.101 = 0.625
Run Code Online (Sandbox Code Playgroud)
我可以编写自己的函数来计算结果,如下所示:
1 * Math.pow(2, -1) + 0*Math.pow(2, -2) + 1*Math.pow(2, -3) // 0.625
Run Code Online (Sandbox Code Playgroud)
但我想知道是否已有任何标准.
我的代码是一个简单的函数,它检查按下了哪个单选按钮,并将该单选按钮的值添加到我的var input = 0;.但是,我知道我做错了,因为它有效,但输出错误.当其中一个if陈述为真时,而不是输入(0)现在等于它自己加上新的值getElementById("small").value,它打印出来010而不是现在10.
我知道在Java中有一个类似的约定,input += getElementById("small").value;但这似乎不起作用.因此,正如您在下面的示例中所看到的,我尝试了替代input = input + /*code*/;但仍然没有运气.
我是JavaScript的新手,但对Java非常熟悉.我想我在这里只是使用了错误的语法,但我所有的Google搜索都是破产.
function calculate()
{
var input = 0;
if (document.getElementById("small").checked)
{
input = input + document.getElementById("small").value;
}
else if (document.getElementById("medium").checked)
{
input = input + document.getElementById("medium").value;
}
else if (document.getElementById("large").checked)
{
input = input + document.getElementById("large").value;
}
else
{
alert("failed");
}
document.getElementById("outar").innerHTML = input;
}
Run Code Online (Sandbox Code Playgroud) 我知道有
Math.floorparseInt但关于这种情况:
Math.floor(1.99999999999999999999999999)
Run Code Online (Sandbox Code Playgroud)
返回2,我怎么才能得到它的整数部分,等于1?