【发布时间】:2014-01-14 07:34:00
【问题描述】:
以下产生以下错误:
int calc_ranks(ranks)
{
double multiplier = .5;
return multiplier * ranks;
}
返回类型double 不是int,由方法calc_ranks 定义。如何舍入/转换为int?
【问题讨论】:
标签: dart
以下产生以下错误:
int calc_ranks(ranks)
{
double multiplier = .5;
return multiplier * ranks;
}
返回类型double 不是int,由方法calc_ranks 定义。如何舍入/转换为int?
【问题讨论】:
标签: dart
我看到很多答案,但描述较少。希望我的回答能增加一些价值。 让我们初始化变量,看看它会如何随着不同的方法改变。
double x = 8.5;
toInt()
它会截断十进制值。
int a = x.toInt();
print(a); // 8
截断()
它还会截断十进制值。
int b = x.truncate();
print(b); // 8
round()
它返回最接近的整数。它使用半向上舍入模式。
int c = x.round();
print(c); // 9
ceil()
它返回大于该值的最接近的整数。
int c = x.ceil();
print(c); // 9
地板()
它返回小于该值的最接近的整数。
int c = x.floor();
print(c); // 8
【讨论】:
您可以简单地使用toInt() 将num 转换为int。
int calc_ranks(ranks)
{
double multiplier = .5;
return (multiplier * ranks).toInt();
}
请注意,要执行完全相同的操作,您可以使用 Truncating division operator:
int calc_ranks(ranks) => ranks ~/ 2;
【讨论】:
试试这个!
int calc_ranks(ranks)
{
double multiplier = .5;
return (multiplier * ranks).truncate();
}
【讨论】:
还有另一种选择,您可以先将 double 转换为 'num' 数据类型,然后使用 toInt() 转换为 int。
double multiplier = .5;
return ((multiplier * ranks) as num).toInt();
num 类型是 int 和 double 类型的继承数据类型。 您可以将 int 和 double 都转换为 num,然后再将其转换为您想要的任何值
(double -> 使用 toDouble(), int -> 使用 toInt())
【讨论】:
很简单,
(20.8).round()
对于字符串,
double.tryParse(20.8).round()
【讨论】:
从字符串到整数 ->
如果你使用 int 格式的字符串,比如 '10' 然后使用---->
int.parse(值)
但是如果字符串是双格式的,比如 '10.6' 然后像这样使用---->
double.parse(value).toInt()
将双精度转换为整数
doubleValue.toInt()
【讨论】:
Dart round double 到 int
使用round()方法,我们可以得到一个最接近双精度的整数。
例如:
int num1 = (2.3).round();
// 2
int num2 = (2.5).round();
// 3
int num3 = (-2.3).round();
// -2
int num4 = (-2.5).round();
// -3
您也可以尝试在 Flutter 中将那些方法将 double 转换为 int
double x = 2.5;
int a = x.toInt();
int b = x.truncate();
int c = x.round();
int d = x.ceil();
int e = x.floor();
print(a); // 2
print(b); // 2
print(c); // 3
print(d); // 3
print(e); // 2
【讨论】:
round 在 Dart 中的含义。其次,其余的东西只是从existing answer复制过来的。请不要像这样发送垃圾邮件。您只是在复制其他答案。
您可以使用以下任何一种。
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
【讨论】:
使用round() 方法对其进行舍入:
int calc_ranks(ranks) {
double multiplier = .5;
return (multiplier * ranks).round();
}
【讨论】:
(0.57 * 100).toInt() 解析为56 的情况,所以各位,要小心。