WeStudio技术社区

 找回密码
 立即注册

快捷登录

QQ登录

只需一步,快速开始

查看: 576|回复: 0

为什么toFixed()方法报错了?

[复制链接]

99

主题

142

帖子

1046

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1046
发表于 2022-11-22 10:10:28 | 显示全部楼层 |阅读模式
本帖最后由 hixon 于 2022-11-22 10:20 编辑

在我们的日常开发工作中,可能经常会使用到 toFixed()方法来保留浮点数的小数位数,但是需要注意的是Number.toFixed()方法返回的值类型为string(字符串)

如 var a = 3.1415926; 我们要保留两位小数并显示到标签上,那么我们可以这样来写代码:
  1. var a = 3.1415926;
  2. ui.main.label.text = a.toFixed(2);
复制代码

下面我们举例说明一下 toFixed()方法报错,如下图的界面,第一次点击“确定”按钮的时候,没有报错,但是第二次点击的时候,就报下面的错了:
  1. ui.main.textButton_enter.onRelease = function() {
  2.     var temp_new;
  3.     var temp_old;
  4.     var temp;
  5.     temp_new = parseFloat(ui.main.singleLineInput_Temp.text);
  6.     temp_old = parseFloat(ui.main.label_tempperature.text);
  7.     temp = temp_new - temp_old + Temp_Value; // Temp_Value为全局变量,初始值为 0
  8.     Temp_Value = temp.toFixed(1);
  9.     ui.main.label.text = Temp_Value;
  10. };
复制代码

not-a-function.png

我们来打印日志定位一下问题
  1. ui.main.textButton_enter.onRelease = function() {
  2.     var temp_new;
  3.     var temp_old;
  4.     var temp;
  5.     temp_new = parseFloat(ui.main.singleLineInput_Temp.text);
  6.     temp_old = parseFloat(ui.main.label_tempperature.text);
  7.     temp = temp_new - temp_old + Temp_Value; // Temp_Value为全局变量,初始值为 0
  8.     util.console.log('typeof Temp_Value: ' + typeof Temp_Value); // 打印Temp_Value的类型
  9.     util.console.log('typeof temp: ' + typeof temp); // 打印temp的类型
  10.     Temp_Value = temp.toFixed(1);
  11.     ui.main.label.text = Temp_Value;
  12. };
复制代码

typeof.png

通过上面的打印日志,我们了解到第一次点击“确定”按钮后,Temp_Value变成了string类型了,因为 Temp_Value = temp.toFixed(1); 然后第二次点击“确定”按钮时,temp的值也变成string了,因为 temp = temp_new - temp_old + Temp_Value;
所以再次调用 temp.toFixed(1)的时候就会报错了。
problem.png

我们可以这样来解决,只需要修改一下第7行代码,通过parseFloat()方法将 Temp_Value转换为浮点值再进行加法计算,得到的 temp值也是浮点值,不再是字符串类型了。
  1. temp = temp_new - temp_old + parseFloat(Temp_Value); // Temp_Value为全局变量,初始值为 0
复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|物一世(北京)科技有限公司 ( 京ICP备20025895 )

GMT+8, 2024-6-15 03:25 , Processed in 0.014029 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表