我在DART中使用整数除法时遇到问题,因为它给出错误:'Breaking on exception: type 'double' is not a subtype of type 'int' of 'c'.'

下面是以下代码:

int a = 500;
int b = 250;
int c;

c = a / b; // <-- Gives warning in Dart Editor, and throws an error in runtime.

如你所见,我希望结果应该是2,或者说,即使"a"或"b"的除法结果是浮点/双精度值,它也应该直接转换为整数值,而不是像那样抛出错误.

我可以通过使用.round()/.ceil()/.loor()来解决问题,但是这还不够,因为这个小操作很关键,因为它在一个游戏更新中被调用了数千次(或者您可以说在requestAnimationFrame中调用).

我还没有找到其他解决办法,知道吗?谢谢

DART版本:1.0.0_r30798

推荐答案

那是因为dart2js人中有Dart uses 100 to represent all numbers人.如果你玩这个游戏,你会得到有趣的结果:

代码:

int a = 1; 
a is int; 
a is double;

结果:

true
true

实际上,当涉及到数字时,建议使用类型num,除非您有很强的理由将其设置为int(例如,在for循环中).如果要继续使用int,请使用截断除法,如下所示:

int a = 500;
int b = 250;
int c;

c = a ~/ b;

否则,我建议使用num型.

Dart相关问答推荐

Dart 3.3接口字段类型升级不起作用

从扩展类访问抽象类属性

flutter.io (dart) - 将填充设置为设备宽度的百分比?

Flutter 布局:如何在 Flutter 中将 Row 放入 Flex(或另一个 Row)中?还使用堆栈小部件

Dart 扩展: don't access members with "this" unless avoiding shadowing

Flutter:合并两张图片,作为单张图片存储在本地存储中

如何正确启用/禁用 Flutter 的 Button

Flutter SlideTransition 从 Offset OFF SCREEN 开始

Dart 中使用的const关键字是什么?

以编程方式使dart中的十六进制 colored颜色 变亮或变暗

~ 在 Dart 中是什么意思?

dart中是否有类似struct struct 的东西?

如何在 Dart 中将 UTF-8 字符串转换为字节数组?

如何在 Dart 中比较两个对象以查看它们是否是同一个实例?

必须初始化不可为空的实例字段

Null aware函数调用运算符

如何删除dart列表中的重复项? list.distinct()?

如何在 Dart 中生成随机数?

如何用 Dart 格式化日期?

你如何在 Dart 中构建一个单例?