Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In Dart is there a quick way to convert int to double?

Tags:

dart

Very simple issue. I have the useless class:

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

I then commit the mortal sin and call new Useless(0); In checked mode (which is how I run my tests) that blows up, because 'int' is not a subtype of type 'double'.

Now, it works if I use new Useless(0.0) , but honestly I spend a lot of time correcting my tests putting .0s everywhere and I feel pretty dumb doing that.

As a temporary measure I rewrote the constructor as:

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

But that's ugly and I am afraid slow if called often. Is there a better way to do this?

like image 861
CarrKnight Avatar asked Oct 17 '14 04:10

CarrKnight


2 Answers

Simply toDouble()

Example:

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

Thanks to @jamesdlin who actually gave this answer in a comment to my previous answer...

like image 68
Ronen Rabinovici Avatar answered Sep 28 '22 00:09

Ronen Rabinovici


In Dart 2.1, integer literals may be directly used where double is expected. (See https://github.com/dart-lang/sdk/issues/34355.)

Note that this is syntactic sugar and applies only to literals. int variables still won't be automatically promoted to double, so code like:

double reciprocal(double d) => 1 / d;  int x = 42; reciprocal(x); 

would fail, and you'd need to do:

reciprocal(x.toDouble()); 
like image 35
jamesdlin Avatar answered Sep 27 '22 22:09

jamesdlin