shashwat
shashwat

Reputation: 8004

Why I can't call Math.Round(double,int) overload

In .NET Library there is Function like
System.Math.Round(double, int)

But why I need to cast double value to float to make it work..??
Look on the following screenshot:

enter image description here

Upvotes: 0

Views: 4944

Answers (2)

Picrofo Software
Picrofo Software

Reputation: 5571

The following function

Math.Round(double value, int digits)

Math.Round(double value, int digits) returns a double

Returns a double. I see that you have tried to define a float of name d to the output from Math.Round(n,2) where n is a double of value 1.12345 and 2 represents an integer using the following code

double n = 1.12345;
float d = Math.Round(n,2);

You'll actually get an error because the output from the above function is double and not a float.

Cannot implictly convert type 'double' to 'float'. An explicit conversion exists (are you missing a cast?)

You may fix this by changing float d = Math.Round(n,2); to double d = Math.Round(n,2);

Thanks,
I hope you find this helpful :)

Upvotes: 6

lawrencexu
lawrencexu

Reputation: 13

Converting from double to float, you will lose precision and it cannot be done implicitly. If you assign a float value to a double variable which is more accurate, the compiler will not complain.

Upvotes: 1

Related Questions