我在这里想念什么吗?
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.01000000000000000020816681711721685132943093776702880859375。(感谢您BigDecimal证明我的观点。:-P)
BigDecimal
因此(缺少十进制浮点数或有理数类型),将其作为字符串输出是将其修整到精确显示所需精度的唯一方法。