2013-08-21 115 views
0

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

第一种方式,

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 

,但不知道哪一个是找磅值之间的差值的正确途径。或者任何其他最好的方法来解决这个问题..?

+0

这不是91盎司,它是91/100盎司。 91盎司将是另外5磅和0.69(69/100)盎司。你的第一个公式应该是8磅14.56盎司(16 * .91 = 14.56)。 – Tim

回答

4

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); 
+0

让我想起板球,4.5分+0.2分= 5.1分。 :) – dotNET

+0

Bah,@dotNET,巴基斯坦任何人都知道板球怎么样?其实,我应该闭口不谈,因为澳大利亚目前做得不太好:-) – paxdiablo

+0

显然(只是显然),你是一句话来不及意识到这一点。 ;-) – dotNET

1

1 pount = 16盎司。

所以,你必须将这个数分成的folloiwng:假设8.91lb

  1. 磅= INT(8.91)= 8磅

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

对两个数字都做同样的事,然后加磅到磅,盎司到盎司(或减),然后再进行返回。如果您添加时超过16盎司,则增加1磅,并从盎司减去16。

这是一个快速的答案让你看。

+0

这是一个严重的建议?我不知道你是否拿着米奇。 – paxdiablo

+0

@paxdiablo - 不是我的回答...但“采取米奇”是什么意思? – Tim

+0

@Tim:这是http://en.wikipedia.org/wiki/Taking_the_piss(取笑)的礼貌形式。 – paxdiablo

1

如果我使用体重很多,我会创建一个类来表示体重。这个班将存储重量在一个单位的措施,并具有只读属性获得不同的计量单位。

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 
    } 
}