Javascript:如何增加文本框中的分数值?示例:0.10到0.11

Javascript:如何增加文本框中的分数值?示例:0.10到0.11,javascript,Javascript,我需要在文本框中增加一个分数 使用javascript 目标是增加1便士,直到达到0.99便士 然后是1.00和1.01 如何在javascript中实现这一点 这是不起作用的 var a; a = document.getElementById('a1').value; a = a+a; alert(a); 警报返回 0.100.10 附加信息 var a; a = parseFloat(document.getElementById('b13').value); a = a+a; ale

我需要在文本框中增加一个分数 使用javascript

目标是增加1便士,直到达到0.99便士 然后是1.00和1.01

如何在javascript中实现这一点

这是不起作用的

var a;
a = document.getElementById('a1').value;
a = a+a;
alert(a);
警报返回

0.100.10
附加信息

var a;
a = parseFloat(document.getElementById('b13').value);
a = a+a;
alert(a);
返回

0.2
我宁愿看到0.20

但最重要的是,如何一次增加0.01

已解决:

两者

而且

document.getElementById('a1').value = +document.getElementById('a1').value + 0.01

工作正常。

文本框以字符串形式返回值,以便对其进行分析

var a;
a = parseFloat(document.getElementById('a1').value);
a = (a+a).toFixed(2);
alert(a);
而且它不会将0.01添加到。。它使a加倍,所以使用类似这样的东西

var a;
a = parseFloat(document.getElementById('a1').value);
a = (a + 0.01).toFixed(2);
alert(a);
首先,像这样将一个浮点数转换为一个浮点数

a = parseFloat(document.getElementById('a1').value);
a = (a + a).toFixed(2)
然后像这样添加并转换一个float

a = parseFloat(document.getElementById('a1').value);
a = (a + a).toFixed(2)
并提示答案。

a包含字符串,而不是数字。string+string返回两个字符串的串联-您没有告诉Javascript这是一个数字,因此它不会将其视为一

您可以使用parseFloat和parseInt将字符串转换为具有小数位数或整数不具有小数位数的浮点数

但是,请注意,浮点数由于存储在有限的内存中而存在不精确性-它们将在一定的位数后舍入,而不是小数位数-二进制位数(例如0.1)不能准确表示为浮点数,尽管在基数10中只有一位小数!,如果你需要做重要的财务计算,你应该意识到这种不精确性,例如,你可以使用定点数字系统。阅读以了解更多信息。

a=a+a不添加.01。如果a是一个数字,它将使a加倍,但由于javascript将其视为一个字符串,所以它只是将其连接起来

你想要a=+a+0.01

这将使a的值增加0.01。初始+是确保javascript将a视为数字而不是字符串

这对您的警报很有效,但您仍然需要将该值设置回原来的值:

document.getElementById('a1').value = a
或者,使用来自HMR的toFixed加法将其全部放在一行中:

document.getElementById('a1').value = (+document.getElementById('a1').value + 0.01).toFixed(2)

您知道parseInt将丢弃所有小数位数,toFixed将再次将其转换为字符串,对吗?并且a=a+a不会将0.01添加到a…您应该使用parseFloat而不是pareInt,我认为返回的字符串并不重要,因为OP很可能会将其用于文本输入的值,但如果需要进一步处理,最好提及它。将来我们可以使用HTML 5 input type=NUMBER。我建议您在HMR的注释中添加toFixed2,这样0.10就不会显示为0.1,理想情况下,因为问题是关于更改文本框中的值,所以请在计算后设置该值。@ScottMermelstein谢谢。。实际上,我没有看到问题的编辑部分OP在某个点更新了问题,需要2个小数点,要做到这一点,你可以做:+0.29+0.01.toFixed2;这将返回字符串0。30@HMR有趣的是,我只是在给Prasath留下评论,让他也这么做。我现在修好了。