首页 > 解决方案 > 为什么 2.0(数字 2.0)同时是 double 和 int?

问题描述

我刚开始学习 Dart 并遇到了下面的代码

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

它产生以下输出

true
true
false

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

我在这里遗漏了一些明显的东西吗?任何指针都会有所帮助。谢谢。

标签: dart

解决方案


只有在浏览器中运行代码才能得到这个结果。

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

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

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


推荐阅读