2011-01-12 9 views
11

मैं कैसे जांच सकता हूं कि फ्लोट नंबर में 2.10, 2.45, 12382.66 और 2.00, 12382.00 जैसे दशमलव नहीं हैं। मैं जानना चाहता हूं कि संख्या "गोल" है या नहीं। मैं प्रोग्रामेटिक तरीके से कैसे कर सकता हूं?जांचें कि क्या फ्लोट नंबर में दशमलव हैं या नहीं

+1

के लिए इस ग फ़ंक्शन का उपयोग उन को देख कर? यदि आप प्रोग्रामेटिक समाधान चाहते हैं, तो हमें और जानकारी दें। – skaffman

+2

(और जिस भाषा में आप काम कर रहे हैं।) – dkarp

उत्तर

5

आप केवल दो के बारे में दशमलव परवाह करते हैं, तो this topic में वर्णित के रूप में एक आंशिक हिस्सा मिलता है कंप्यूटिंग bool hasDecimals = (((int)(round(x*100))) % 100) != 0;

सामान्य मामले में द्वारा शेष हो और 0.

+2

यह मेरे लिए खूबसूरती से काम करता है। मैं उद्देश्य-सी बीटीडब्ल्यू का उपयोग कर रहा हूँ। जब तक आप जानते हैं कि मूल्यांकन के बारे में आप कितने दशमलव हैं, यह आसान है और नौकरी करता है। और उपरोक्त नमूने में "100" की घटनाओं को प्रतिस्थापित करने के लिए, आप इसे और अधिक लचीला बनाने के लिए, कितने दशमलव स्पॉट्स की परवाह करते हैं, इसकी शक्ति से 10 गुणा करके इसे संशोधित कर सकते हैं। – idStar

3

की तुलना आप ऐसा कर सकता है:

float num = 23.345f; 
    int intpart = (int)num; 
    float decpart = num - intpart; 
    if(decpart == 0.0f) 
    { 
    //Contains no decimals 
    } 
    else 
    { 
    //Number contains decimals 
    } 
40

का उपयोग मापांक काम करेगा:

if(num % 1 != 0) do something! // eg. 23.5 % 1 = 0.5

+2

ग्रेट उत्तर, लेकिन यह [PHP] (http://php.net/manual/en/language.operators.arithmetic.php) में काम नहीं करेगा: "मॉड्यूलस के संचालन पूर्णांक में परिवर्तित हो जाते हैं (दशमलव भाग को अलग करके) प्रसंस्करण से पहले। " – Daan

6

मैं उद्देश्य सी

BOOL CGFloatHasDecimals(float f) { 
    return (f-(int)f != 0); 
} 
2
import java.lang.Math; 
public class Main { 
    public static void main(String arg[]){ 
     convert(50.0f); 
     convert(13.59f); 

    } 

    private static void convert(float mFloat){ 
     if(mFloat - (int)mFloat != 0) 
      System.out.println(mFloat); 
     else 
      System.out.println((int)mFloat); 
    } 
} 
संबंधित मुद्दे