我不能把数字加在一起,尽管用了parseFloat,我还是得到了NaN.

本代码;

        console.log(freshsnow_single_resort.fs_ski_resort_aa_advanced_length);
        console.log(freshsnow_single_resort.fs_ski_resort_aa_expert_length);
        console.log(freshsnow_single_resort.fs_ski_resort_aa_freeride_length);
        console.log(freshsnow_single_resort.fs_ski_resort_aa_extreme_length);
        
        let fs_ski_resort_aa_advanced_length    = parseFloat(freshsnow_single_resort.fs_ski_resort_aa_advanced_length) 
        let fs_ski_resort_aa_expert_length      = parseFloat(freshsnow_single_resort.fs_ski_resort_aa_expert_length)
        let fs_ski_resort_aa_freeride_length    = parseFloat(freshsnow_single_resort.fs_ski_resort_aa_freeride_length)
        let fs_ski_resort_aa_extreme_length     = parseFloat(freshsnow_single_resort.fs_ski_resort_aa_extreme_length);
        
        let expert_km = parseFloat(fs_ski_resort_aa_advanced_length + fs_ski_resort_aa_expert_length + fs_ski_resort_aa_freeride_length + fs_ski_resort_aa_extreme_length);
        
        console.log(typeof fs_ski_resort_aa_advanced_length );
        console.log(typeof fs_ski_resort_aa_expert_length );
        console.log(typeof fs_ski_resort_aa_freeride_length );
        console.log(typeof fs_ski_resort_aa_extreme_length );
        
        console.log( expert_km );

在控制台中生成以下内容:

4901.39
2057.49
0
<<blank/novalue

Number
Number
Number
Number
NaN

我不明白发生了什么.如有任何帮助,不胜感激.

推荐答案

ParseFloat不是一个总是为您返回有效数字的函数.返回的类型始终是数字,但是NaN的类型仍然是数字.

console.log(parseFloat("Invalid Number"));
console.log(typeof NaN);
console.log(typeof parseFloat("Invalid Number"));

console.log(NaN + 100);

您需要额外的判断和后备,以防结果为NaN. 例如,如果您想将它们视为零:

const value = "<<blank/novalue";
const parsedValue = parseFloat(value);
const safeParsedValue = isNaN(parsedValue) ? 0 : parsedValue;

console.log(safeParsedValue);

您可能还需要判断过大的值,因为当数值超出双精度64位IEEE 754-2019时,该函数将返回Infinity.

parseFloat("1.7976931348623159e+308"); // Infinity
parseFloat("-1.7976931348623159e+308"); // -Infinity

Javascript相关问答推荐

我无法在NightWatch.js测试中获取完整的Chrome浏览器控制台日志(log)

在观察框架中搜索CSV数据

使用JQuery单击元素从新弹出窗口获取值

您能在卸载程序(QtInsteller框架)上添加WizardPage吗?

不能将空字符串传递给cy.containes()

在运行时使用Next JS App Router在服务器组件中运行自定义函数

如何在Node.js中排除导出的JS文件

将Node.js包发布到GitHub包-错误ENEEDAUTH

创建以键值对为有效负载的Redux Reducer时,基于键的类型检测

在VS代码上一次设置多个变量格式

如果没有页面重新加载Angular ,innerHTML属性绑定不会更新

WebSocketException:远程方在未完成关闭握手的情况下关闭了WebSocket连接.&#三十九岁;

Node.js API-queryAll()中的MarkLogic数据移动

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

我怎样才能得到一个数组的名字在另一个数组?

Angel Auth Guard-用户只有在未登录时才能访问登录页面,只有在登录时才能访问其他页面

连续添加promise 时,如何在所有promise 都已结算时解除加载覆盖

如何处理不带参数的redux thunk payloadCreator回调函数?

如何将值从后端传递到前端

使用JavaScript或PHP从div ID值创建锚标记和链接