我在这里错过了什么吗?
var someNumber = 123.456; someNumber = someNumber.toFixed(2); alert(typeof(someNumber)); //alerts string
为什么.toFixed()返回一个字符串?
.toFixed()
我想将数字四舍五入为 2 位小数。
它返回一个字符串,因为 0.1 及其幂(用于显示小数)在二进制浮点系统中不可表示(至少不能完全准确)。
例如,0.1 真的是 0.1000000000000000055511151231257827021181583404541015625,而 0.01 真的是 0.0100000000000000002081668171172168513204309378578。(感谢您BigDecimal证明我的观点。:-P)
BigDecimal
因此(没有十进制浮点或有理数类型),将其作为字符串输出是使其精确修剪到显示所需精度的唯一方法。