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

时间:2013-12-26 16:59:27

标签: dart

以下产生以下错误:

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

返回类型double不是int,由方法calc_ranks定义。如何围绕/转换为int

9 个答案:

答案 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)

从字符串到整数 ->

  1. 如果您以 int 格式字符串,例如 '10' 然后使用---->

    int.parse(value)

    但是如果字符串是双格式的,比如 '10.6' 然后像这样使用---->

    double.parse(value).toInt()

  2. 将双精度转换为整数

    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())