如何在 Dart 中将一个 double 转换为 int?

下面产生以下错误:

int calc_ranks(ranks)
{
double multiplier = .5;
return multiplier * ranks;
}

返回类型 double不是由方法 calc_ranks定义的 int。如何舍入/强制转换为 int

176640 次浏览

使用 round()方法进行四舍五入:

int calc_ranks(ranks) {
double multiplier = .5;
return (multiplier * ranks).round();
}

您可以简单地使用 到 Int ()num转换为 int

int calc_ranks(ranks)
{
double multiplier = .5;
return (multiplier * ranks).toInt();
}

请注意,要做完全相同的事情,您可以使用 截断“组织”操作员:

int calc_ranks(ranks) => ranks ~/ 2;

您可以使用下列任何一种。

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

从 string 到 int->

  1. 如果你使用像“10”这样的 int 格式字符串 然后使用—— >

    Parse (value)

    但如果字符串是双重格式,如’10.6’ 然后像这样使用—— >

    Parse (value) . toInt ()

  2. 将 double 转换为 int

    Double Value. toInt ()

很简单,

(20.8).round()

对于 String 来说,

double.tryParse(20.8).round()

还有另一种选择,您可以首先将 double 强制转换为‘ num’数据类型,然后使用 toInt ()将其转换为 int。

  double multiplier = .5;
return ((multiplier * ranks) as num).toInt();

Num 类型是 int 类型和 double 类型的继承数据类型。 您可以将 int 和 double 都强制转换为 num,然后再次强制转换为您想要的任何值

(double-> use toDouble () ,int-> use toInt ())

我看到很多答案,但描述较少。希望我的答案会增加一些价值。 让我们初始化变量,看看它将如何改变不同的方法。

 double x = 8.5;

toInt()

它截断十进制值。

 int a = x.toInt();
print(a); // 8

截断()

它还截断十进制值。

 int b = x.truncate();
print(b); // 8

()

它返回最接近的整数。它使用半舍入模式。

  int c = x.round();
print(c); // 9

CEIL ()

它返回最接近的大于该值的整数。

  int c = x.ceil();
print(c); // 9

楼层()

它返回比值小的最接近的整数。

  int c = x.floor();
print(c); // 8

试试这个!

int calc_ranks(ranks)
{
double multiplier = .5;
return (multiplier * ranks).truncate();
}

我查看了上面的答案,并添加了一些更多的答案,使之更容易理解。

double value = 10.5;

使用 toInt ()

void main(){
double value = 10.5;
var y = value.toInt();
print(y);
print(y.runtimeType);
}

使用 round ()

Round ()方法返回与 double 最接近的整数。

void main(){
double value = 9.6;
var b = value.round();
print(b);
print(b.runtimeType);
}

使用 ceil ()

Ceil ()方法返回等于或大于给定双精度数的最小整数。

void main(){
double value = 9.5;
var d = value.ceil();
print(d);
print(d.runtimeType);
}

使用地板()

Floor ()方法返回不大于给定双精度数的最大整数。

void main(){
double value = 10.9;
var j = value.floor();
print(j);
print(j.runtimeType);
}

结论

我们已经通过4种不同的技术,转换为一个整数的双飞镖和扑动。您可以选择适合您的用例的方法来解决您的问题。颤振是可怕的,并提供了很多惊人的功能。

把 double 转换成 int: 组织

double01 ~/ double02

PS: 运算符 x ~/y 比(x/y) . toInt ()更有效。

乘法,加法,减法

(double01 * double02).toInt
(double01 + double02).toInt
(double01 - double02).toInt