考虑以下代码:
int integralPart = 123;
int decimalPart = 12345;
// double desiredDouble = 123.12345;
如示例所示,我想从 2 个整数创建一个双精度数。
我知道我可以使用double.Parse(integralPart.ToString() + "." + decimalPart.ToString())
,但如果应用程序没有使用英语作为默认语言,我会遇到一些例外情况。
考虑以下代码:
int integralPart = 123;
int decimalPart = 12345;
// double desiredDouble = 123.12345;
如示例所示,我想从 2 个整数创建一个双精度数。
我知道我可以使用double.Parse(integralPart.ToString() + "." + decimalPart.ToString())
,但如果应用程序没有使用英语作为默认语言,我会遇到一些例外情况。
修复您的解决方案:
double.Parse(integralPart.ToString() + "." + decimalPart.ToString(),
CultureInfo.InvariantCulture);
不过,它的效率不是很高。
如果它们是价格,请decimal
改用:
decimal.Parse(integralPart.ToString() + "." + decimalPart.ToString(),
CultureInfo.InvariantCulture);
仅从您的措辞来看,我建议您真的想使用decimal
s:
int integralPart = 123;
int decimalPart = 12345;
decimal result = decimalPart;
while (result>=1m) result/=10m; // CAVEAT: see below
result+=integralPart;
哎呀。还有其他人提到的很大的歧义问题。可能,您需要while
用固定比例替换我的:
result = integralPart + decimalPart / 1000000m; // fixed scale factor