【问题标题】:Create a double value from two separate variables C#从两个单独的变量 C# 创建一个双精度值
【发布时间】:2014-12-05 09:29:44
【问题描述】:

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

假设 x = 123 和 y = 456。我想使用这两个变量创建一个双精度数,这样 结果 = 123.456。

我怎么得到这个?

【问题讨论】:

  • 假设他们是int,将y除以1000.0并添加到x?
  • xy是什么类型?
  • 将 x +"."+y 存储为字符串,并将字符串转换为双精度
  • double 结果 = (double)X + (double)Y/1000; ?
  • 这样 >> double mydoule = Convert.ToDouble("123" + "." + "456");

标签: c# math logic


【解决方案1】:
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

【讨论】:

  • 真棒...+1 使用纯数学
  • 但是你为什么要x &gt; 0
  • 在我的代码中 -10 结合 6 将输出 -9.4。不知道这是否是OP所期望的。也许应该是-10.6。需要指定:)
  • @Softwarehuset 并显示你的基准代码,因为我的测试即使是小整数也比你的更快。
  • @Softwarehuset 在您对小整数和迭代进行基准测试时,问题是我的代码被称为方法,但您的解决方案是内联的。也让我的代码内联,然后测试它:)
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多