C# 从两个单独的变量C创建一个双精度值#

C# 从两个单独的变量C创建一个双精度值#,c#,math,logic,C#,Math,Logic,我有两个独立的整数类型的变量x和y 假设x=123,y=456。我想用这两个变量创建一个double 结果=123.456 如何得到它?假设它们是int,用1000.0除以y,然后将其添加到x?x和y的类型是什么?将x+“+y存储为字符串,并将字符串转换为doubledouble-double-Result=(double)x+(double)y/1000?这样>>双mydoule=Convert.ToDouble(“123”+“+”456”);真棒…+1用于使用纯数学但是为什么你想要x>0?在

我有两个独立的整数类型的变量x和y

假设x=123,y=456。我想用这两个变量创建一个double 结果=123.456


如何得到它?

假设它们是
int
,用
1000.0
除以
y
,然后将其添加到
x
?x和
y
的类型是什么?将x+“+y存储为字符串,并将字符串转换为doubledouble-double-Result=(double)x+(double)y/1000?这样>>双mydoule=Convert.ToDouble(“123”+“+”456”);真棒…+1用于使用纯数学但是为什么你想要
x>0
?在我的代码中-10与6组合将输出-9.4。不知道这是否是OP的期望。也许应该是-10.6。需要指定:)@Softwarehuset并显示您基准测试的代码,因为我对小整数的测试速度比您的快。@Softwarehuset在您对小整数和迭代的基准测试中,问题是我的代码被称为方法,但您的解决方案是内联的。让我的代码也内联,然后测试:)
public static double Combine(int x, int y)
{
    if (x < 0 || y < 0) throw new NotSupportedException(); // need to specify
           // how it should behave when x or y is below 0
    if (y == 0) return x;

    var fractionMultipler = (int)Math.Floor(Math.Log10(y)) + 1;
    var divider = Math.Pow(10, fractionMultipler);


    return x + (y / divider);
}
 var z = Combine(30, 11123); // result 30.11123