1

考虑以下代码:

int integralPart = 123;
int decimalPart = 12345;
// double desiredDouble = 123.12345;

如示例所示,我想从 2 个整数创建一个双精度数。

我知道我可以使用double.Parse(integralPart.ToString() + "." + decimalPart.ToString()),但如果应用程序没有使用英语作为默认语言,我会遇到一些例外情况。

4

2 回答 2

2

修复您的解决方案:

double.Parse(integralPart.ToString() + "." + decimalPart.ToString(),
    CultureInfo.InvariantCulture);

不过,它的效率不是很高。

如果它们是价格,请decimal改用:

decimal.Parse(integralPart.ToString() + "." + decimalPart.ToString(),
    CultureInfo.InvariantCulture);
于 2013-08-19T20:50:00.767 回答
2

仅从您的措辞来看,我建议您真的想使用decimals:

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
于 2013-08-19T20:50:26.377 回答