Dart:floor() 和 toInt() 有什么区别

Dart: What is the difference between floor() and toInt()

我想在不舍入的情况下截断双精度数的所有小数。我这里有两种可能:

double x = 13.5;
int x1 = x.toInt(); // x1 = 13
int x2 = x.floor(); // x2 = 13

这两种方法有什么区别吗?

如文档所述:

floor:

Rounds fractional values towards negative infinity.

toInt:

Equivalent to truncate.

truncate:

Rounds fractional values towards zero.

因此 floor 向负无穷大舍入,但 toInt/truncate 向零舍入。对于正值,这无关紧要,但对于负分数值,floor 将 return 小于原始值,而 toInt/truncate 将 return更多。