Проверьте, содержит ли число с плавающей запятой десятичные или нет - PullRequest
13 голосов
/ 12 января 2011

Как я могу проверить, содержит ли число с плавающей точкой десятичные дроби, такие как 2.10, 2.45, 12382.66, а не 2.00, 12382.00. Я хочу знать, является ли число "круглым" или нет. Как я могу сделать это программно?

Ответы [ 5 ]

45 голосов
/ 21 февраля 2013

Использование модуля будет работать:

if(num % 1 != 0) do something!
// eg. 23.5 % 1 = 0.5
7 голосов
/ 11 октября 2013

Я использую эту функцию c для цели c

BOOL CGFloatHasDecimals(float f) {
    return (f-(int)f != 0);
}
5 голосов
/ 12 января 2011

Если вам нужны только два знака после запятой, получите остаток, вычислив bool hasDecimals = (((int)(round(x*100))) % 100) != 0;

В общем случае получите дробную часть, как описано в этой теме , и сравните ее с 0.

3 голосов
/ 12 января 2011

Вы можете сделать это:

  float num = 23.345f;
  int intpart = (int)num;
  float decpart = num - intpart;
  if(decpart == 0.0f)
  {
    //Contains no decimals
  }
  else
  {
     //Number contains decimals
  }
2 голосов
/ 23 декабря 2013
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);
    }
}
...