gpt4 book ai didi

javascript - 如何在 Javascript 中将大数除以 1 而不转换为 float

转载 作者:行者123 更新时间:2023-12-02 23:06:32 24 4
gpt4 key购买 nike

我有一个代码需要检查给定的秒数是否可以组成一年,但是当传递 1 秒的参数时,该函数就会发疯!

const isUpToYear = seconds => parseInt(seconds / 31536000) >= 1;

console.log(isUpToYear(311536000)); // true
console.log(isUpToYear(3600)); // false
console.log(isUpToYear(1)); // true!!

显然,如果传入一秒,我需要该函数返回 false。我该如何解决这个问题?

最佳答案

parseInt 旨在用于字符串。传递给 parseInt 的第一个参数被转换为字符串,if it isn't one already :

The value to parse. If this argument is not a string, then it is converted to one using the ToString abstract operation. Leading whitespace in this argument is ignored.

并且 1/31536000 很小:3.1709791983764586e-8。对此调用 parseInt 会导致其转换为字符串 ('3.1709791983764586e-8'),再次转换回数字,结果为 3 ,这是可以理解的(因为 3 是字符串中唯一的前导数字字符)。

改用Math.floor

const isUpToYear = seconds => Math.floor(seconds / 31536000) >= 1;

console.log(isUpToYear(311536000)); // true
console.log(isUpToYear(3600)); // false
console.log(isUpToYear(1)); // true!!

关于javascript - 如何在 Javascript 中将大数除以 1 而不转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57565955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com