我试图将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)
答案 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 said,toFixed
位于错误的位置。最终得到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));