JavaScript toString 限制

标签 javascript tostring

所以我的问题是,我正在编写一个程序来检查数字是偶数还是奇数而不除法。所以我决定取这个数字,用

把它变成一个字符串
number.toString()

方法。我遇到的问题是,如果您输入的数字长度约为 17 位或更多位,则该字符串的前 17 位数字是正确的,那么它只是 0,有时是 2。例如,

function toStr (number) 
{
    return number.toString(10);
}

console.log(toStr(123456789123456789));

打印,

123456789123456780

有什么想法吗?

最佳答案

问题与字符串或您的函数完全无关。尝试转到控制台并输入表达式 123456789123456789 并按回车键。

您同样会获得 123456789123456780

为什么?

JavaScript 语言中的表达式123456789123456789 被解释为JavaScript 数字类型,只能精确表示到一定数量的两位有效数字。输入数字以二为底表示时的有效数字多于 JavaScript 数字表示中可用的以二为底的有效数字,因此该值会自动以二为底进行四舍五入,如下所示:

123456789123456789 =
  110110110100110110100101110101100110100000101111100010101 (base two)
123456789123456780 =
  110110110100110110100101110101100110100000101111100001100 (base two)

请注意,您可以在 JavaScript 中准确地表示一些 大于特定大小的数字,但只有那些以二为底的有效数字不超过 JavaScript 的空间的数字。例如,10 的非常大的幂的 2 倍,它在基数 2 中只有 一个 有效数字。

如果您将此程序设计为接受来自窗体或对话框的用户输入,那么您将接收字符串形式的输入。您只需要检查最后一位数字以确定输入数字是奇数还是偶数(假设它确实是一个整数开头)。另一个答案提出了获取字符串最后一个字符的标准方法以及测试字符串值是奇数还是偶数的标准方法。

关于JavaScript toString 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23706933/

相关文章:

javascript - 评估传递给 Angular 指令的对象中的字符串表达式

c++ - itoa 到 std::to_string

java - 从不同的类打印 toString

javascript - 将 Mongo ID 转换为字符串进行比较

javascript - 如何反转 toString() 对数字的影响?

javascript - 将文本颜色从标签传递给变量 javascript

javascript - 设置路由时 Angular 范围变量会发生变化吗?

javascript - EaselJS中绕中心旋转圆弧

Javascript 在 li 标签中获取 h2 标签并返回它

javascript - jquery 中的 toString 方法?或类似的东西