我做了一个简单的应用程序,将一定数量的比特币转换为货币。
该应用程序在我的Android模拟器(Nexus 5x)上正常工作。 我的问题是应用程序抛出:
System.FormatException:输入字符串的格式不正确
当我在我的Android设备上测试它时。 我已经对我的模拟器和设备进行了调试,并且在参数方面没有差异。
有人想到为什么会发生这种异常吗?
public static async Task<decimal> ConvertCurrency(string curr, decimal amount)
{
var currency = await GetCurrency(curr);
var stringRate = currency.Rate;
var rate = decimal.Parse(stringRate);//this is where the it crash
var result = rate * amount;
return result;
}
答案 0 :(得分:5)
这个逗号分隔符是你的问题。您需要更改解析方法以检测当前文化并使用IFormatProvider
string stringRate = "118,130.4542";
decimal d = decimal.Parse(stringRate,
NumberStyles.Currency,
new CultureInfo("en-Us").NumberFormat);
//Output: 118130.4542M
d = decimal.Parse(stringRate, new CultureInfo("en-Us").NumberFormat);
//Output: 118130.4542M
答案 1 :(得分:1)
最有可能的原因是手机上的语言设置。如果您尝试使用默认的decimal.Pars函数从Web解析字符串,它将尝试根据您的语言设置(或本地,取决于)来识别分隔符。这意味着,如果手机使用&#34;,&#34;作为小数分隔符,即使字符串格式为12.32,它也会尝试将其查找为输入字符串。要解决这个问题,请将文化或隐式分隔符传递给解析器。
decimal.TryParse(EnglishDecimal, out b)