javascript - .toFixed 函数不适用于 js-object

标签 javascript tofixed

为什么当我想将格式化数字分配给变量时它显示错误?

var jsObject = new Object();
jsObject.number = 0;
for (i = 1; i <= 10; i++) {
  jsObject.number += 0.1;
  console.log((jsObject.number).toFixed(1)); // works and shows right numbers
  jsObject.number = (jsObject.number).toFixed(1); // TypeError: jsObject.number.toFixed is not a function
}

最佳答案

因为.toFixed()返回一个字符串,以便您用字符串替换数字。简单的日志记录将向您显示正在发生的情况。

var jsObject = new Object();

jsObject.number = 0;

for(i = 1; i <= 10; i++) {

    jsObject.number += 0.1;
    console.log(i, "before", jsObject.number, typeof jsObject.number)
    jsObject.number = (jsObject.number).toFixed(1);            
    console.log(i, "after", jsObject.number, typeof jsObject.number)


}

输出将是:

1 before 0.1 number
1 after 0.1 string
2 before 0.10.1 string
"Uncaught TypeError: jsObject.number.toFixed is not a function",

JavaScript 不保留尾随零。因此,如果您需要它们进行输出,最好在输出数字的地方进行。或者唯一的其他选择是在添加之前对其进行 parseFloat Number 。

jsObject.number = Number(jsObject.number) + 0.1;
jsObject.number = parseFloat(jsObject.number) + 0.1;

关于javascript - .toFixed 函数不适用于 js-object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52258777/

相关文章:

javascript - .toFixed() 调用负指数返回一个数字,而不是一个字符串

JavaScript - 将 3 个数字转换为百分比,不会产生 100% 的总数

javascript - 错误 : Can't set headers after they are sent in express-fileupload

javascript - 如何使用管道有条件地显示innerHTML值

javascript - 下拉菜单,如果打开则删除类

javascript - 在数字文字上调用 toFixed 方法

javascript - 将 toFixed 添加到现有 Math.abs 函数

javascript - 如何告诉 iframe 将图像链接调整为给定的宽度和高度

javascript - 每个 y Axis 具有自定义颜色的 Highcharts 热图

javascript - .toFixed(1) 不适用于 8.333333333333334 十进制数