web-dev-qa-db-fra.com

Conversion de chaîne en float en C #

Je convertis une chaîne du type "41.00027357629127" et je l'utilise;

Convert.ToSingle("41.00027357629127");

ou

float.Parse("41.00027357629127");

Ces méthodes renvoient 4.10002732E + 15.

Lorsque je me convertis en float, je veux "41.00027357629127". Cette chaîne devrait être la même ...

88
Mehmet

Les paramètres régionaux de votre thread sont définis sur un paramètre dans lequel la marque décimale est "," au lieu de ".".

Essayez d'utiliser ceci:

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

Notez cependant qu'un flottant ne peut contenir autant de chiffres de précision. Pour ce faire, vous devrez utiliser un double ou un nombre décimal.

204
Matthew Watson

Tout d'abord, il ne s'agit que d'une présentation du numéro float que vous voyez dans le débogueur. La valeur réelle est approximativement exacte (autant que possible).

Remarque: Utilisez toujours toujours les informations CultureInfo lorsque vous utilisez des nombres à virgule flottante ou des chaînes.

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

C'est juste un exemple; choisissez une culture appropriée à votre cas.

21
Tigran

Vous pouvez utiliser les éléments suivants:

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

Utiliser Convert.ToDouble("41.00027357629127");

Convert.ToDouble documentation

7
Ozgur Dogus

La précision de float est de 7 chiffres. Si vous souhaitez conserver le tout, vous devez utiliser le type double qui conserve 15 à 16 chiffres. En ce qui concerne le formatage, regardez un article sur le formatage double . Et vous devez vous inquiéter à propos des séparateurs décimaux en C # .

4
jpe

Vous pouvez double.Parse("41.00027357629127");

1
ABH