我正在尝试将双精度点转换为带点而不是逗号的小数。我觉得我已经尝试了所有可能的方法(可行的方法除外),所以我没主意了。
double amount = myUsd / price;
string amountAsString = amount.ToString();
decimal value = Decimal.Parse(amountAsString, CultureInfo.InvariantCulture);
例如,给出了FormatException。
谢谢
答案 0 :(得分:1)
正如汉斯·帕桑(Hans Passant)所说,如果您以与格式化相同的方式进行解析,则可以避免很多问题->使用string amountAsString = amount.ToString(CultureInfo.InvariantCulture);
编辑
由于要传递指数表示法,因此需要告诉解析器。这适用于您的示例值:
decimal value = Decimal.Parse(amountAsString, System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture);
但是我建议不要将其格式化为Double。首先将其转换为十进制。然后将其解析为小数:
double amount = myUsd / price;
Decimal decAmount = (Decimal)amount;
string amountAsString = decAmount.ToString(CultureInfo.InvariantCulture);
decimal value = Decimal.Parse(amountAsString, CultureInfo.InvariantCulture);
那么它将永远不会以指数表示法格式化。
也请参见此C# Fiddle snippet