答案 0 :(得分:11)
JavaScript不区分整数和浮点数,我认为所有的东西都被认为是双精度,这就是为什么你得到结果。
查看MDN上Number属性的详细信息。
答案 1 :(得分:6)
JavaScript中没有int和double
在JavaScript中,int,flot和double都被规范化以协同工作。它们被视为1(它们被视为Number
,这是 IEEE 754 浮动。感谢@Elias Van Ootegem)。平等,自由和博爱。因此;
10 * 0.7 = 7
JavaScript不像C 。
答案 2 :(得分:6)
JavaScript没有整数类型,double或float ......它只有1种类型的所有数字:helpfuly名为Number
类型(try var foo = new Number(7);
或{ {1}}
现在,我知道我说JS不知道花车,但这并不完全正确。所有var foo = Number('123string');
类型的vars /值,基本上是64位浮点数,由IEEE 754标准定义(实际上,正如Jan Dvorak向我指出的那样,Number
在大多数静态类型中语言),带有它带来的所有警告:
double
但这不是重点。关键是,在JS中你可以执行float + int arithmatic,而不需要内部强制转换或转换。这就是(.1 + .2);//0.30000000000000004
总是为7
答案 3 :(得分:5)
Javascript没有整数,即使它有,也没有什么说/
需要返回一个整数(只是因为另一种语言可能会这样做并不意味着每种语言都必须这样)。该操作会生成float
/ Number
,就像所有Javascript编号一样,是句号。
答案 4 :(得分:1)
JavaScript使用动态类型。这意味着像这样的变量:
var str = "hi";
以后可以成为:
str = 123; //now we have an 'int'
str += 0.35; //now str is 123.35, a 'float'
因此,JavaScript不会将浮点数转换为整数。
如果你想强迫“演员”,你必须这样做:
var integer = parseInt( 3.14*9.0291+23, 10 ); //the second parameter (10) is the 'base'
但请记住,Javascript不会处理类型,这是你的问题。
答案 5 :(得分:1)
试试这个
10*parseInt(7/10)
希望这会对你有所帮助
答案 6 :(得分:1)
如果您尝试遵守规则,那么
10 * (7/10) --> 10 * .7 --> 7
你无法改变它的结果。
所以结果0.7也应该是整数,即0
如果您需要,请尝试使用
Math.Floor();
这会将小数更改为最接近的int!或者尝试parse()