以下产生以下错误:
int calc_ranks(ranks)
{
double multiplier = .5;
return multiplier * ranks;
}
返回类型double
不是int
,由方法calc_ranks
定义。如何围绕/转换为int
?
答案 0 :(得分:35)
使用round()
方法对其进行舍入:
int calc_ranks(ranks) {
double multiplier = .5;
return (multiplier * ranks).round();
}
答案 1 :(得分:26)
您只需使用toInt()将num
转换为int
。
int calc_ranks(ranks)
{
double multiplier = .5;
return (multiplier * ranks).toInt();
}
请注意,为了完全相同,您可以使用Truncating division operator:
int calc_ranks(ranks) => ranks ~/ 2;
答案 2 :(得分:8)
您可以使用以下任何一种。
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
答案 3 :(得分:2)
很简单,
(20.8).round()
对于字符串,
double.tryParse(20.8).round()
答案 4 :(得分:1)
从字符串到整数 ->
如果您以 int 格式字符串,例如 '10' 然后使用---->
int.parse(value)
但是如果字符串是双格式的,比如 '10.6' 然后像这样使用---->
double.parse(value).toInt()
将双精度转换为整数
doubleValue.toInt()
答案 5 :(得分:0)
飞镖将整数舍入为整数
使用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
答案 6 :(得分:0)
我看到很多答案,但描述较少。希望我的回答能增加一些价值。 让我们初始化变量,看看它会如何随着不同的方法发生变化。
double x = 8.5;
toInt()
它截断十进制值。
int a = x.toInt();
print(a); // 8
truncate()
它也会截断十进制值。
int b = x.truncate();
print(b); // 8
round()
它返回最接近的整数。它使用半向上舍入模式。
int c = x.truncate();
print(c); // 9
ceil()
它返回最接近的大于该值的整数。
int c = x.ceil();
print(c); // 9
floor()
它返回小于该值的最接近的整数。
int c = x.floor();
print(c); // 8
答案 7 :(得分:0)
试试这个!
int calc_ranks(ranks)
{
double multiplier = .5;
return (multiplier * ranks).truncate();
}
答案 8 :(得分:-1)
还有另一种选择,您可以先将 double 转换为 'num' 数据类型,然后使用 toInt() 转换为 int。
double multiplier = .5;
return ((multiplier * ranks) as num).toInt();
num 类型是 int 和 double 类型的继承数据类型。 您可以将 int 和 double 都转换为 num,然后再次将其转换为您想要的任何内容
(double -> 使用 toDouble(), int -> 使用 toInt())