如何在Javascript中将小数点添加到十进制数

时间:2017-04-13 17:23:53

标签: javascript

我试图将0.10添加到23.50但我得到的是23.50.10而不是23.60

我的代码

console.log((parseFloat(23.50) + parseFloat((Math.random() * 0.10) + 0.01).toFixed(2)));

这段代码生成小数点,如:0.04,0.29等......

parseFloat((Math.random() * 0.90) + 0.01).toFixed(2)

4 个答案:

答案 0 :(得分:2)

您的.toFixed括号错误。

console.log((parseFloat(23.50) + parseFloat((Math.random() * 0.10) + 0.01)).toFixed(2));

答案 1 :(得分:2)

你有.toFixed(2)错误的地方。结果会创建一个字符串,然后将其连接起来。它应该是这样的:

console.log((parseFloat(23.50) + parseFloat((Math.random() * 0.10) + 0.01)).toFixed(2));

答案 2 :(得分:1)

合并评论:

作为Scott Sauyet saidtoFixed位于错误的位置。最终得到number + string,它将数字转换为字符串并进行字符串连接。

作为I said:这不是唯一的问题。你没有parseFloat 已经一个数字的东西。这样做会将数字转换为字符串,然后将该字符串解析为数字,这一点毫无意义。 : - )

作为Barmar said:进行计算,然后对结果使用toFixed

console.log((23.50 + (Math.random() * 0.10) + 0.01).toFixed(2));

此外,+的优先级低于*,因此您不需要那些内部的parens(或0上的最后一个0.10):

console.log((23.50 + Math.random() * 0.1 + 0.01).toFixed(2));

......当然,如果你愿意的话,你可以把它们包括在风格中。

答案 3 :(得分:1)

这可能是一个错字,但你的.toFixed()是错误的。它在添加到parseFloat(23.50)之前将yourparseFloat((Math.random()* 0.10)+ 0.01)转换为字符串,从而导致字符串连接。

执行add,然后执行.toFixed():

console.log((parseFloat(23.50) + parseFloat((Math.random() * 0.10) + 0.01)).toFixed(2));

或者要格外谨慎并使用var:

var foo = parseFloat(23.50) + parseFloat((Math.random() * 0.10) + 0.01);
console.log(foo.toFixed(2));