【发布时间】:2012-08-03 15:38:17
【问题描述】:
我编写了一个函数,该函数的行为取决于其参数的数字类型。整数或浮点数。
使用此问题How do I check that a number is float or integer? 中的一些代码很容易检测是否浮动,但后来我偶然发现了如果您使用该数字调用函数,javascript 将1.0 无故强制转换为1 的情况。
例子:
function dump(a, b) {
console.log(a, typeof b, b);
}
dump('1', 1);
dump('1.0', 1.0);
dump('1.1', 1.1);
输出 chrome、firefox、ie、opera 和 safari 都给出了相同的结果:
1 number 1
1.0 number 1 "wrong"
1.1 number 1.1
我知道 javascript 只知道 number 类型,但强制转换似乎太过分了。我想出的唯一解决方案是使用'1.0' 之类的字符串值调用函数,检测点并使用parseFloat 或parseInt。
对此有何建议?
【问题讨论】:
-
为什么你需要
1.0而不是1?它们是相同的值。 JavaScript 没有int或float的概念,只有number。 -
你写的函数是什么?为什么它是
int或float很重要? -
函数返回一个随机数,例如在 A 和 B 之间。根据初始值,它可以是 4,10 = > 7 (int) 或 1.5, 12 => 4.25 - 你明白了。
-
我还是不明白。你只想要数字的平均值(
1.5, 12不会是6.75)?这个“例子”并没有说明为什么它是int或float很重要。 -
它可以是 1.5 到 12 之间的任何浮点数,也可以是您调用函数时使用的任何范围。
标签: javascript floating-point parsefloat