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 ...
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.
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.
Vous pouvez utiliser les éléments suivants:
float asd = (float) Convert.ToDouble("41.00027357629127");
Utiliser Convert.ToDouble("41.00027357629127");
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 # .
Vous pouvez double.Parse("41.00027357629127");