Проверьте, содержит ли число с плавающей запятой десятичные знаки или нет.

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

Ответ 1

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

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

Ответ 2

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

BOOL CGFloatHasDecimals(float f) {
    return (f-(int)f != 0);
}

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

PHP решение:

function hasDecimals($x)
{
    return floatval($x) - intval($x) != 0;
}