为什么2.0(数字2.0)同时为double和int?

时间:2019-02-22 12:38:52

标签: dart

我刚刚开始学习Dart,并遇到了以下代码

main(){
  print(2.0 is int);
  print(2.0 is double);
  print(int is double);
}

它产生以下输出

true
true
false

我不确定为什么会生成上述输出。 以上输出表明所有整数都可以视为双精度。

我在这里缺少明显的东西吗?任何指针都会有所帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

仅当在浏览器中运行代码时,您才能获得此结果。

浏览器无法区分int和double,只知道double,因此Dart在编译为JS时也无法区分它们。

从理论上讲,这是可能的,但是使用自定义类型来维护整数属性的性能损失会非常高。

另请参阅https://webdev.dartlang.org/faq#q-how-are-integers-handled-when-compiled-to-javascript