如何区分 JavaScript 中的十进制浮点数和整数 [英] How to differentiate between a one-decimal float and integer in JavaScript

查看:51
本文介绍了如何区分 JavaScript 中的十进制浮点数和整数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用一个函数来验证在 JavaScript 中作为参数传递的数字是浮点数还是整数.
该方法适用于诸如4.34"之类的数字,即具有非零小数,但对于诸如3.0"之类的数字则失败,返回整数而不是浮点数.
这是我迄今为止能够想出的代码

I'm using a function to to verify whether the number passed as a parameter is a float or an integer in JavaScript.
The method is working for numbers such as '4.34' i.e. with a non-zero decimal but it fails for numbers such as '3.0', returning integer instead of float.
This is the code I have been able to come up with so far

function dataType(x) {
    if (typeof x === 'number' && ){
        if (Math.round(x) === x ){
            return 'integer';
        }
        return 'float';
    }
}

console.log(dataType(8)); //integer
console.log(dataType(3.01)); //float
console.log(dataType(3.0)); // should return float

我真的很感激有关如何在 JavaScript 中执行此操作的帮助.
提前致谢.

I would really appreciate some help on how to do this in JavaScript.
Thanks in advance.

更新:我想要 console.log(dataType(3.0)); 返回浮点数.

Update: I want console.log(dataType(3.0)); to return float.

推荐答案

JS 中的每个数字都是浮点数.JS 中只有一种数字类型(Number).

Every number in JS is a float. There is only one number type in JS (Number).

因此,没有跨浏览器的方式来保证以下之间的区别:

Thus, there's no cross-browser way of guaranteeing a difference between:

3
3.0
3.0000000000000

等等.

即使在现代浏览器中,(3.0000).toString() === "3";//真.

Even in a modern browser, (3.0000).toString( ) === "3"; //true.

试图在 JS 中强制转换或强制执行数字类型安全是毫无意义的.
处理 Number 格式的数字,根据需要使用所需的精度转换为字符串和字符串.

Trying to cast or enforce numeric type safety in JS is rather pointless.
Work on the numbers in the Number format, convert into and out of string, using desired precision, as needed.

这篇关于如何区分 JavaScript 中的十进制浮点数和整数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆