Javascript .toFixed函数不';不能使用js对象

Javascript .toFixed函数不';不能使用js对象,javascript,tofixed,Javascript,Tofixed,为什么当我想把格式化的数字分配给变量时会显示错误 var jsObject=new Object(); jsObject.number=0; 对于(i=1;i,因为重新运行一个字符串,所以您将用一个字符串替换数字。简单的日志记录将向您显示发生了什么 var jsObject=new Object(); jsObject.number=0; for(i=1;itoFixed返回一个字符串,而字符串没有toFixed方法。像这样更新for循环以解决该问题 for (i = 1; i < 1

为什么当我想把格式化的数字分配给变量时会显示错误

var jsObject=new Object();
jsObject.number=0;
对于(i=1;i,因为重新运行一个字符串,所以您将用一个字符串替换数字。简单的日志记录将向您显示发生了什么

var jsObject=new Object();
jsObject.number=0;

for(i=1;i
toFixed
返回一个字符串,而字符串没有
toFixed
方法。像这样更新
for
循环以解决该问题

for (i = 1; i < 10; i++) {
    jsObject.number += 0.1;
    console.log((jsObject.number).toFixed(1));
    jsObject.number = parseFloat((jsObject.number).toFixed(1)); // <--
}
(i=1;i<10;i++)的
{
jsObject.number+=0.1;
log((jsObject.number).toFixed(1));

jsObject.number=parseFloat((jsObject.number).toFixed(1));//此方法返回字符串

返回值:它以字符串表示形式返回一个数字

因此,它第一次工作时,但随后所有时间都失败,不再是一个数字

您可以解析为数字,或强制转换为数字(例如使用乘法):


for(i=1;i如注释中所述,您正在用数字的字符串表示形式覆盖数字(
toFixed
执行此操作)。因此,您必须将字符串重新转换为数字格式。正确与否的方法有很多,我更喜欢除以1(或乘法)

var jsObject=new Object();
jsObject.number=0;

对于(i=1;i您需要将从
toFixed()
返回的
字符串转换为正确的数据类型

toFixed()
返回一个
字符串
,因此在第二次迭代中,它试图调用
string.toFixed()
,它不存在,因为
toFixed()
不适用于
strings

var jsObject=new Object();
jsObject.number=0;

对于(i=1;i,因为它是第一次迭代后的字符串。您正在覆盖相同的
jsObject.number
;当您设置
jsObject.number+=0.1
时,它是一个数字;当您设置
jsObject.number=(jsObject.number).toFixed(1)
它变成了一个字符串。当您稍后再次设置相同的
.toFixed
行时,您不再有数字,而是一个字符串。哇,无法想象toFixed会转换为字符串。使用parseFloat和temp变量修复。谢谢!请注意,您无法真正修复数字的小数点精度,因为数字是以二进制浮点。当您将
.toFixed()
的字符串结果转换回一个数字时,您将得到一个接近字符串所表示的十进制值的值,但不一定相同。
for(i = 1; i <= 10; i++) {

    jsObject.number += 0.1;

    console.log( (jsObject.number).toFixed(1) ); // works and shows right numbers

    jsObject.number = 1 * (jsObject.number).toFixed(1); // TypeError: jsObject.number.toFixed is not a 
}