2013-07-03 56 views
-1

在我的Windows應用程序基於我提出一個單位轉換從公制英制,然後再返回。這個工程在理論上,除非我是做以下設置若干小數點後4位爲1或0

-set默認單位帝國

-update號(現在可以說,我的數量等於1000)

-set默認單位公制

-update號(現在可以說,我的個數等於25400毫米)

-set默認回帝國

更新號碼(這裏是問題)

- 在這一點上我的號碼不會更新,因爲如果號碼已經在這些單位中,我的代碼不會進行轉換(如果您想要,但可以顯示代碼不需要我的問題),這是需要的,所以我想最簡單的方法來克服這個錯誤是改變我的數字小數點後第四位爲公制或1爲帝國,但我不能說只是

number += 0.0001 or number -= 0.0001 

,因爲在轉換過程中,我能得到一些像3452.823591384023840583但我會利用這個號碼,只顯示前三個小數位3452.823因此,對於這個例子,我想利用我的號碼,改變第四decim所以這裏是我想要的...

取一個數字讓我們使用1.234567並改變第四個小數位(5)和將其更改爲0或1,什麼都一個我想要的,現在讓使用0。所以,現在我將有一個數字,是1.234067。一旦我有了這個新的號碼,我希望能夠檢查的if語句第四位小數,看它是否是0或者1所以像

if(number.getFourthDemialPlace() == 1) DO STUFF 

是否需要或代碼進一步解釋,我會很高興給它,謝謝。

+0

這聽起來像你試圖想出一個非常醜陋的黑客來解決一個相當簡單的問題。有可能有多種方法可以解決這個問題,而無需訴諸某種「魔術」佔位符價值。 – Jason

回答

0

下面是我還能做什麼,這是我認爲最簡單的方式。 (不涉及很多計算等)。轉換的數目爲一個字符串(使用ToString()法)。然後,用0/1小數點後更換第四個字符。然後,將其轉換回數字。你可以通過做相同的檢查小數點後第四位...

1

你或許應該使用的格式來處理你的實際問題...

要提取特定的數字而言最直接的方式就是多/除以10^x到數字你有興趣轉移到個位,轉換爲int/BigInteger比得到% 10結果:

((int)(value * 10000) %10) 
0

你爲什麼不把這些單位保持在一種類型?而做修飾語轉換
我會告訴你一個例子,讓你知道我的意思:

public enum UnitType 
{ 
    Feet = 0 ,Meters = 1 
} 

public Length 
{ 
    public Length(decimal lenInMeters) 
    { 
     _lenInMeters = lenInMeters; 
    } 

    private decimal _lenInMeters; 
    private decimal ConvertToMeters(decimal feet) 
    { 
     //do conversion 
    } 

    private decimal ConvertToFeet(decimal meter) 
    { 
     //do conversion 
    } 

    private void ChangeByFeet(decimal feetChange) 
    { 
     _lenInMeters + ConvertToMeters(feetChange); 
    } 

    public void Change(decimal amount, UnitType units) 
    { 
      switch(units) 
      { 
       case(UnitType.Meters): 
        _lenInMeters+=amount; 
        return; 
       case(UnitType.Feet): 
        _lenInMeters+=ConvertToMeters(amount); 
        return; 
       case(default): 
        throw new ApplicationException("not supported type"); 
      } 
    } 

    public decimal InFeet 
    { 
     get 
     { 
      return ConvertToFeet(_lenInMeters); 
     } 
    } 

    public decimal InMeters 
    { 
     get 
     { 
      return _lenInMeters; 
     } 
    } 
} 

這樣你就不必轉換和你正在做什麼之間YOYO不喜歡不透明你最初的建議。

相關問題