在Dart中有一种快速的方法将int转换为double吗?

时间:2014-10-17 04:17:48

标签: dart

非常简单的问题。我有无用的课程:

class Useless{
  double field;
  Useless(this.field);
}

然后我犯了致命的罪并致电new Useless(0); 在检查模式(这是我运行测试的方式)中,因为'int'不是'double'类型的子类型

现在,如果我使用new Useless(0.0),它就有效,但老实说,我花了很多时间来纠正我的测试,把.0s放在各处,我觉得这样做很蠢。

作为临时措施,我将构造函数重写为:

    class Useless{
      double field;
      Useless(num input){
          field = input.toDouble();
      }
    }

但这很难看,如果经常打电话我会害怕。有更好的方法吗?

9 个答案:

答案 0 :(得分:13)

toDouble()

示例:

int intVar = 5;
double doubleVar = intVar.toDouble();

感谢@jamesdlin在对我以前的答案的评论中实际给出了这个答案...

答案 1 :(得分:13)

In Dart 2.1,在需要double的地方可以直接使用整数。 (请参见https://github.com/dart-lang/sdk/issues/34355。)

请注意,这仅适用于文字int 变量仍然不会自动提升为double,因此代码如下:

double reciprocal(double d) => 1 / d;

int x = 42;
reciprocal(x);

仍然会失败,您需要这样做:

reciprocal(x.toDouble());

答案 2 :(得分:8)

您还可以使用:

int x = 15;
double y = x + .0;

答案 3 :(得分:4)

没有比你选择的选项更好的方法:(

我也被这个地方所困扰,出于某种原因,我在编辑器中没有得到任何警告而且它在运行时失败了;强大的烦人:(

答案 4 :(得分:2)

这次尝试:

class Useless{
  double field;
  Useless(num input){
    field = input.toDouble();
  }
}

您可以使用double class中的parse method,它接受​​一个字符串。

class Useless{
  double field;
  Useless(num input){
    field = double.parse(input.toString()); //modified line
  }
}

使用构造函数的初始化程序编写上述类的一种更紧凑的方法是:

class Useless{
  double _field;
  Useless(double field):_field=double.parse(field.toString());
}

答案 5 :(得分:1)

我正在使用组合:

static double checkDouble(dynamic value) {
  if (value is String) {
    return double.parse(value);
  } else if (value is int) {
    return 0.0 + value;
  } else {
    return value;
  }
}

答案 6 :(得分:1)

使用toDouble()方法。
例如:

int a = 10
print(a.toDouble) 
//or store value in a variable and then use
double convertedValue = a.toDouble()

答案 7 :(得分:0)

由于颤振中的所有除法结果都加倍,因此我要做的最简单的事情就是将整数值除以1: 即 int x = 15; double y = x /1;

答案 8 :(得分:0)

Dart语言具有两种数字类型:int和double。前者是一个任意精度的有符号整数,而后者是IEEE-754双精度浮点数。

没有隐式转换,因此您必须显式使用toDouble,或者可能更好:将y输入为num,它是double和int的超类。

int x = 11;

double y = x.toDouble();

如果数字不能表示为双精度数,则返回一个近似值。对于数值较大的整数,近似值可能是无限的。

相关问题