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;itoFixed
返回一个字符串,而字符串没有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
}