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...

630523 次浏览

You can double.Parse("41.00027357629127");

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#.

Use Convert.ToDouble("41.00027357629127");

Convert.ToDouble documentation

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.

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

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.

You can use the following:

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

First you need to using System.Globalization to dealing convertions from string to float/double/decimal without problem.

Then you can call Parse on float(or double/decimal depending at the accuracy you need), and as argument in Parse you need your string (you can store it in a variable if you want) and CultureInfo.InvariantCulture.NumberFormat

So, as previous users already explained:

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

A 2022 way of converting an string that represents a float value:

(float)Convert.ToDecimal(value, CultureInfo.GetCultureInfo("en-US"));

where you also can choose what kind of float are you expecting to convert, because some CultureInfo instances represents decimal values with a , and others with ..

If you need more decimals to obtain more precision, just not use float

Convert.ToDecimal(value, CultureInfo.GetCultureInfo("en-US"));