JavaScript中有浮点数吗?

JavaScript中有浮点数吗?,javascript,Javascript,我看到很多关于检测值是否为浮点数的方法的问题,但没有一个示例适用于像1.0、5.0等这样的数字 有可能区分像1和1.0或5和5.0这样的数字吗?如果是,如何检测浮点变量类型?在Ecmascript 6中,可以使用: 然而,这还没有得到广泛的支持。现在,您可以使用以下方法: function isInteger(value) { return typeof value === 'number' && (value | 0) === value; } 这适用于所有可以用64

我看到很多关于检测值是否为浮点数的方法的问题,但没有一个示例适用于像1.0、5.0等这样的数字


有可能区分像1和1.0或5和5.0这样的数字吗?如果是,如何检测浮点变量类型?

在Ecmascript 6中,可以使用:

然而,这还没有得到广泛的支持。现在,您可以使用以下方法:

function isInteger(value) {
    return typeof value === 'number' && (value | 0) === value;
}

这适用于所有可以用64位浮点表示法精确表示的整数值。

我认为更简洁的答案是:

在javascript中:5==5.0

因此,从这一点上看,无法找到区分它们的方法。 它们完全是一回事


编辑:提醒:javascript中唯一的x(如(x!==x)是NaN。

Zerstoren,其他的在技术上是正确的:在javascript中,如果输入2.0或2,在内部存储数据的方式上没有区别,因此无法确定数据最初是以整数还是浮点形式写入的

但是,如果您希望验证某些用户表单数据,以便用户只输入整数(例如,订购2个比萨饼,而不是2.0),那么您确实有一个解决方案,因为这实际上是一个字符串(因此“2.0”与“2”不同)。你可以用

typeof(n) =="string" && parseInt(n, 10) == n && n.indexOf('.')==-1
第一种类型的条件是,在我提到的情况下,数据仍然是字符串格式。请看这里:


Andrei

JavaScript中没有
float
int
基本类型,只有
数字。因此,5.0和5之间没有区别

如果它对您很重要(无论出于何种原因),则需要将该值存储为字符串,然后使用
parseFloat
提取该值

例如:

var int = "5";
var float = "5.0";
console.log(int == float); // false
console.log(parseFloat(int) == parseFloat(float)); // true
如何打印固定小数位数的数字

我刚刚看到Zerstoren的评论:“我从mongodb获取数据,并希望使用强类型打印这些数据。”

该方法可用于打印固定小数位数的数字:

var num = 5;
console.log( num.toFixed(1) ); // 5.0

在JavaScript中无法区分这些整数和常规整数,不。只有一个
Number
类型。它们都是浮点数。你期望什么样的行为?确实是这样的。我想在当前示例中设为False,试着读一个问题。我需要对数字1.0、2.0和其他数字执行此操作。请尝试阅读您的答案,没有区别。
typeof value
绝不是
integer
。@minitech-是的。修正了。我的思绪在某个地方偏离了方向。+1,这是对的,但仍然无法区分
5.0
5
@Zerstoren您可能试图以错误的方式解决问题,为什么你需要知道一个数字是浮点数还是整数?@Sniffer我从mongodb获取数据,并希望用强类型打印这些数据。或者你可以使用
console.log(+int==float),也将打印
true
var num = 5;
console.log( num.toFixed(1) ); // 5.0