检查浮点数是否包含小数

Sam*_*Sam 14 floating-point decimal

如何检查浮点数是否包含小数,如2.10,2.45,12382.66而不是2.00,12382.00.我想知道这个数字是否"圆".我该如何以编程方式执行此操作?

Kni*_*hts 50

使用模数将起作用:

if(num % 1 != 0) do something!
// eg. 23.5 % 1 = 0.5
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,但这不适用于[PHP](http://php.net/manual/en/language.operators.arithmetic.php):"模数的操作数转换为整数(通过去除小数部分)之前处理". (5认同)

Ale*_*man 7

我将此c函数用于目标c

BOOL CGFloatHasDecimals(float f) {
    return (f-(int)f != 0);
}
Run Code Online (Sandbox Code Playgroud)


Eug*_*its 5

如果你只关心两位小数,那么通过计算得到余数 bool hasDecimals = (((int)(round(x*100))) % 100) != 0;

在一般情况下,获取本主题中描述的小数部分,并将其与0进行比较.

  • 这对我很有效.我正在使用Objective-C btw.只要您知道您关心评估的小数位数,这很简单并且可以完成工作.并且您可以通过将10乘以您关心的小数点的幂来修改它,以替换上述示例中出现的"100",以使其更加灵活. (2认同)