所以,我有一个对象。
var position = {
x: 1,
y: 0
}
经过几次运算后,x或y可以变成0.3700000000000001。但是,我需要将其设置为0.37。我尝试过:
position[x].toFixed(2)
摆脱00000000000001的正确方法是什么?
答案 0 :(得分:0)
除了使用字符串键或 dot 表示法,应该没有任何问题:
var position = {
x: 0.3700000000000001,
y: 0
}
position.x = +position.x.toFixed(2); // + converts the resulted string to number
console.log(position.x);
答案 1 :(得分:0)
position[x]
将获得位置对象的属性,该属性将等于值变量x 。您应该使用position.x
。
您还需要更改position.x
的值,因为position.x.toFixed(2)
不会更改该值。
position.x = position.x.toFixed(2)
toFixed()
返回一个string
。您应该使用+
将其转换为再次浮动。
console.log(+(0.3700000000000001). toFixed(2))
答案 2 :(得分:0)
如果您想要一个数字,则无法丢弃00000000000001
来获得0.37
。与其他语言一样(大多数硬件支持IEEE 754),数字0.37
不存在。如果扫描0.37
,则四舍五入到最接近的可能数字:0.37.toPrecision(18)
显示"0.369999999999999996"
。
因此,toFixed()
返回字符串而不是数字。因此,使用toFixed()
并将结果转换回浮点数是毫无意义的。
最简单的解决方案是使用这些 unexact 值并将toFixed()
仅用于输出(即toFixed()
的想法)。
另一个解决方案,例如货币是,将所有值存储为美分/便士,仅在输出上将值除以100:($cent/100).toFixed(2)
答案 3 :(得分:-1)
您正在获取值,但没有存储它,因此原始vulea不会更改。您需要这样做:
func methodTwo() {
methodFour()
methodThree()
}
func testMethodFour() {
methodFour()
// check assumptions
}
func methodFour() {
// code that you originally had in methodTwo before methodThree
}