Converting String To Float in C#

I am converting a string like "41.00027357629127", and I am using;

Convert.ToSingle("41.00027357629127"); 

or

float.Parse("41.00027357629127"); 

These methods return 4.10002732E+15.

When I convert to float I want "41.00027357629127". This string should be the same...

3

7 Answers

Your thread's locale is set to one in which the decimal mark is "," instead of ".".

Try using this:

float.Parse("41.00027357629127", CultureInfo.InvariantCulture.NumberFormat); 

Note, however, that a float cannot hold that many digits of precision. You would have to use double or Decimal to do so.

2

First, it is just a presentation of the float number you see in the debugger. The real value is approximately exact (as much as it's possible).

Note: Use always CultureInfo information when dealing with floating point numbers versus strings.

float.Parse("41.00027357629127", System.Globalization.CultureInfo.InvariantCulture); 

This is just an example; choose an appropriate culture for your case.

2

You can use the following:

float asd = (float) Convert.ToDouble("41.00027357629127"); 
1

Use Convert.ToDouble("41.00027357629127");

Convert.ToDouble documentation

1

The precision of float is 7 digits. If you want to keep the whole lot, you need to use the double type that keeps 15-16 digits. Regarding formatting, look at a post about formatting doubles. And you need to worry about decimal separators in C#.

2

You can double.Parse("41.00027357629127");

1

You can use parsing with double instead of float to get more precision value.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like