【问题标题】:Difference between 2 lbs(pound) values2 磅(磅)值之间的差异
【发布时间】:2013-08-23 08:06:25
【问题描述】:

我需要一个建议来找出两个磅(磅)值之间的差异。我尝试了两种方式,

第一种方式,

var pound1 = 151.10;
var pound2 = 142.19;
var finalPoundValue = (pound1 - pound2);

// result 8.91 -> 8 Pounds 91 Ounce 

第二种方式,

var value1 = 151.10;
var value2 = 142.19;
var poundDiff = (151 - 142);
var ounceDiff = (10 - 19);

// result 9 Pounds -9 Ounce

但是,不知道哪一种方法是找出磅值之间差异的正确方法。或任何其他可用于解决此问题的最佳方法..?

【问题讨论】:

  • 不是 91 盎司,而是 91/100 盎司。 91 盎司将是另外 5 磅和 0.69 (69/100) 盎司。您的第一个公式应为 8 磅 14.56 盎司 (16 * .91 = 14.56)。

标签: c# c#-4.0 double units-of-measurement


【解决方案1】:

8.91 磅不是 8 磅 91 盎司,远非如此。它是 8 磅和 (0.91 * 16 = ~ 15) 盎司,因为一磅是 16 盎司。

我会使用您的第一个变体来获得磅差,然后进行一些调整以将其转换为磅和盎司,例如:

var pound1 = 151.10;
var pound2 = 142.19;
var poundDiff = (pound1 - pound2);

var finalPoundValue = (int) poundDiff;
var finalOunceValue = (int) ((poundDiff - finalPoundValue) * 16);

【讨论】:

  • 让我想起了板球,其中 4.5 次以上 + 0.2 次以上 = 5.1 次以上。 :)
  • 呸,@dotNET,巴基斯坦人对板球有什么了解?实际上,我应该闭嘴,因为澳大利亚目前的表现不太好:-)
  • 显然(只是很明显),你迟到了一句话才意识到这一点。 ;-)
【解决方案2】:

1 磅 = 16 盎司。

因此,您必须将数字分为以下几部分:假设 8.91lb

  1. 磅 = int(8.91) = 8lb

  2. 盎司 = (8.91 - int (8.91) ) * 16 = 14.56

对这两个数字执行相同的操作,然后将磅与磅、盎司与盎司相加(或减去),然后进行结转。如果添加时超过 16 盎司,则增加 1 磅,并从盎司中减去 16。

这是一个供您查看的快速答案。

【讨论】:

  • 这是一个严肃的建议吗?我不知道你有没有拿米奇。
  • @paxdiablo - 不是我的答案......但是“拿米奇”是什么意思?
  • @Tim:这是en.wikipedia.org/wiki/Taking_the_piss 的礼貌形式(取笑)。
  • @paxdiablo - 啊,谢谢。我有点想这是类似的东西,但以前从未听过那个特定的短语。 :)
【解决方案3】:

如果我经常使用重量,我会创建一个类来表示重量。该类将权重存储在单个度量单位中,并具有用于获取不同度量单位的只读属性。

class Weight
{
    private double ounces;
    private const double OUNCES_PER_POUND = 16.0;

    public double Pounds
    {
        get { return ounces / OUNCES_PER_POUND; }
    }

    public double Ounces
    {
        get { return ounces; }
    }

    public Weight(double pounds)
    {
        this.ounces = pounds * OUNCES_PER_POUND;
    }

    public Weight(int pounds, double ounces)
    {
        this.ounces = pounds * OUNCES_PER_POUND + ounces;
    }

    // An example operator, probably want to implement addition
    // and perhaps multiplication/division as well
    public static Weight operator -(Weight w1, Weight w2)
    {
        return new Weight((w1.ounces - w2.ounces) / OUNCES_PER_POUND);
    }

    public override string ToString()
    {
        return String.Format("{0} pounds, {1} ounces", (int)Pounds, Math.Round(Ounces % OUNCES_PER_POUND, 4));
    }
}

class Program
{
    public static void Main()
    {
        var w1 = new Weight(151.10);
        var w2 = new Weight(142.19);
        Console.WriteLine("w1: " + w1.ToString() );         // 151 pounds, 1.6 ounces
        Console.WriteLine("w2: " + w2.ToString() );         // 142 pounds, 3.04 ounces
        Console.WriteLine("diff: " + (w1 - w2).ToString()); //   8 pounds, 14.56 ounces
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 2014-03-04
    • 2017-09-24
    • 1970-01-01
    • 2013-09-18
    相关资源
    最近更新 更多