以下产生以下错误:
int calc_ranks(ranks)
{
double multiplier = .5;
return multiplier * ranks;
}
Run Code Online (Sandbox Code Playgroud)
返回类型'double'不是'int',由方法'calc_ranks'定义
如何舍入/强制转换为int?
rig*_*old 58
使用以下round()方法将其舍入:
int calc_ranks(ranks) {
double multiplier = .5;
return (multiplier * ranks).round();
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*uin 37
您只需使用toInt()将a转换num为int.
int calc_ranks(ranks)
{
double multiplier = .5;
return (multiplier * ranks).toInt();
}
Run Code Online (Sandbox Code Playgroud)
请注意,要完成相同的操作,您可以使用截断除法运算符:
int calc_ranks(ranks) => ranks ~/ 2;
Run Code Online (Sandbox Code Playgroud)
Cop*_*oad 25
您可以使用以下任何一种。
double d = 20.5;
int i = d.toInt(); // i = 20
int i = d.round(); // i = 21
int i = d.ceil(); // i = 21
int i = d.floor(); // i = 20
Run Code Online (Sandbox Code Playgroud)
jit*_*555 23
我看到很多答案,但描述较少。希望我的回答能够增加一些价值。让我们初始化该变量,看看使用不同的方法它会如何变化。
double x = 8.5;
Run Code Online (Sandbox Code Playgroud)
toInt()
它截断十进制值。
int a = x.toInt();
print(a); // 8
Run Code Online (Sandbox Code Playgroud)
截短()
它还会截断十进制值。
int b = x.truncate();
print(b); // 8
Run Code Online (Sandbox Code Playgroud)
圆形的()
它返回最接近的整数。它使用半向上舍入模式。
int c = x.round();
print(c); // 9
Run Code Online (Sandbox Code Playgroud)
天花板()
它返回大于该值的最接近的整数。
int c = x.ceil();
print(c); // 9
Run Code Online (Sandbox Code Playgroud)
地面()
它返回小于该值的最接近的整数。
int c = x.floor();
print(c); // 8
Run Code Online (Sandbox Code Playgroud)
小智 7
我查看了上面的答案并添加了更多答案以使其更容易理解。
\ndouble value = 10.5;\nRun Code Online (Sandbox Code Playgroud)\n使用 toInt()
\nvoid main(){\n double value = 10.5;\n var y = value.toInt();\n print(y);\n print(y.runtimeType);\n}\nRun Code Online (Sandbox Code Playgroud)\n使用圆()
\nround() 方法返回最接近双精度的整数。
\nvoid main(){\n double value = 9.6;\n var b = value.round();\n print(b);\n print(b.runtimeType);\n}\nRun Code Online (Sandbox Code Playgroud)\n使用 ceil()
\nceil() 方法返回等于或大于给定双精度的最小整数。
\nvoid main(){\n double value = 9.5;\n var d = value.ceil();\n print(d);\n print(d.runtimeType);\n}\nRun Code Online (Sandbox Code Playgroud)\n使用地板()
\nFloor() 方法返回不大于给定双精度的最大整数。
\nvoid main(){\n double value = 10.9;\n var j = value.floor();\n print(j);\n print(j.runtimeType);\n}\nRun Code Online (Sandbox Code Playgroud)\n结论
\n我们\xe2\x80\x99已经使用了 4 种不同的技术在 Dart 和 Flutter 中将双精度数转换为整数。您可以选择适合您的用例的方法来解决您的问题。Flutter 非常棒,并且提供了很多令人惊奇的功能。
\n要将 double 转换为 int 只是这样:除法
double01 ~/ double02
Run Code Online (Sandbox Code Playgroud)
PS:运算符 x ~/ y 比 (x / y).toInt() 更高效。
乘法、加法和减法
(double01 * double02).toInt
(double01 + double02).toInt
(double01 - double02).toInt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28709 次 |
| 最近记录: |