cnd
cnd

Reputation: 33784

Rounding floats with `E` in C#

I've got 7,0975401565468943E+22

And Math.Round(x, 3) returns 7,0975401565468943E+22

Is it normal behavior and should I check if number contains E and if so just use something alike ToString("N2"); ?

code example:

float flo = float.Parse( " 7,0975401565468943E+22 " ); 
double flox = Math.Round(flo, 3);

Upvotes: 0

Views: 176

Answers (1)

Peter Duniho
Peter Duniho

Reputation: 70701

The behavior you describe appears normal (though without a code example it is impossible to know for sure).

Your number has no significant digits in the fractional portion, as displayed. Note the "E+22", this means that you are dealing with a very large number. There are only 17 significant digits displayed, with another 5 digits not shown before you get to the decimal point. You can round to as many fractional digits as you want, you won't see any change in the number being displayed.

Upvotes: 3

Related Questions