在C#中,将2个整数(整数和小数部分)连接到一个双精度

本文关键字:整数 连接 双精度 一个 2个 小数部 | 更新日期: 2023-09-27 18:28:11

考虑以下代码:

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

我想从2个int创建一个double,如示例所示。

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

在C#中,将2个整数(整数和小数部分)连接到一个双精度

仅从你的措辞来看,我建议你真的想使用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

解决方案的修复:

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

不过效率不是很高。

如果是价格,请使用decimal

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