Javascript Math.floor特定数字范围之间的问题

前端之家收集整理的这篇文章主要介绍了Javascript Math.floor特定数字范围之间的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我面临以下场景的 javascript的Math.floor函数问题:

1)从8192和10484的值,

@H_403_4@if I type 8192.8 -> The Math.floor converts it into 8192.79 if I type 8192.88 -> The Math.floor converts it into 8192.87 if I type 8192.3 -> The Math.floor converts it into 8192.29

奇怪的是,除了从上面给出的范围外,该功能工作正常.

@H_403_4@HTML: <div data-bind="text: popIncrease"></div> <input type="text" data-bind="value: userInput,valueUpdate: 'afterkeydown'" /> Javascript: var viewmodel = function () { var _self = this; _self.userInput = ko.observable(); _self.popIncrease = ko.computed(function () { return parseFloat((Math.floor(_self.userInput() * 100) / 100)).toFixed(2); }); }; ko.applyBindings(new viewmodel());

的jsfiddle:https://jsfiddle.net/91z5bdy4/1/

当我用1000改变100它解决错误但我不明白为什么这发生在第一个地方?

解决方法

你可以切换到这个: @H_403_4@return parseFloat(_self.userInput()).toFixed(2);

jsFiddle的工作版本:https://jsfiddle.net/jfriend00/5rLL04Lk/

或者,如果你想解决.toFixed()的一些特性,你可以使用这个:

@H_403_4@return (Math.round(_self.userInput() * 100) / 100).toFixed(2);

工作jsFiddle:https://jsfiddle.net/jfriend00/xx2aj2L0/

解决方案通过了所有三个测试用例.

猜你在找的JavaScript相关文章