2015-11-30 3 views
3

J'utilise simplement le code simple mais je ne peux pas comprendre la raison d'une erreurPourquoi lors de la conversion en single j'ai perdu le point (13.5 devient 135)?

Console.WriteLine(Convert.ToSingle("13.5")); 

output 135 

Pourquoi ??

+5

Très probablement à cause de votre environnement local dans lequel le point est les milliers seperator – DarkBee

+2

Ma * estimation * est que la culture de votre thread en cours utilise '.' comme séparateur de milliers, et non une virgule ... spécifier la culture invariante (par exemple 'float.Parse (" 13.5 ", CultureInfo.InvariantCulture)' si nécessaire –

+0

CultureInfo.InvariantCulture résolu le problème, merci – Mikail

Répondre

7

Il semble que . est un séparateur des milliers (qui est ignoré lors de la conversion) dans votre culture actuelle; utiliser InvariantCulture:

Console.WriteLine(Convert.ToSingle("13.5", CultureInfo.InvariantCulture)); 
+0

Oui, vous avez 100% raison! Merci – Mikail

+0

@Mikail: tout à fait un problème typique, en particulier pour 'Russian' (' ru-RU') culture avec ',' séparateur décimal (* virgule *) et '.' mille séparateur (* point *) –

+0

Dmitry, oui c'était vraiment problème que je pouvais pas imaginer. Le mien a été changé d'américain à Tur kish. – Mikail