10 奇葩的 JavaScript precision 问题

在我的 HTML 代码中,有一个让用户输入数字的 input 如下 <input type="number" step="0.01" value={amount} onChange={handleInputChange} /> ,在我的 JavaScript 代码中,我希望在用户输入 非0.01倍数的值 的时候,页面报错,所以写了如下代码: `
function handleInputChange(event) {

const value = event.target.value
const number = parseFloat(value)
// Check if value is a multiple of 0.01
if (!Number.isInteger(number * 100)) {
  setError('Ether amount must be a multiple of 0.01.')
} else {
  setError('')
}

} `

在实际运行中,发现大部分时候都运行正常,但是如果用户输入1.09, 1.1, 1.11~1.16 这些数值的时候,就会报错。我写了console.log,崩溃的发现在 number * 100 的时候,因为 precision 的问题,会得出一个非常近似,但却不是正确答案的值。

求助大神,这种情况应该怎么办。

请先 登录 后评论

最佳答案 2023-10-01 09:30

无正确答案,取消问题

请先 登录 后评论

其它 3 个回答

zen
请先 登录 后评论
Tiny熊 - 布道者
  擅长:智能合约,以太坊
请先 登录 后评论
豆豉蒸柳丁 - 开发工程师
请先 登录 后评论