2012-07-06 81 views
0

我想检查一个浮点变量的数字长度,但我不知道要使用的正确语法。我看了这个,我找不到答案。检查一个浮点数的长度

我的代码是一个简单的if语句:从长度

NSString *stringNumber = [NSString stringWithFormat:@"%g", currentValue]; 
int length = stringNumber.length 

你或许可以减去1:

if (currentNumber.digits < 3) { //If the number has less that three digits, I don't know what to put here to get it working 

    //code 
} 
+1

你说的长度是什么意思?你的意思是小数点前的数字吗?只是之后的?或者全部都是? – Jodaka 2012-07-06 17:04:13

+0

对不起,只是小数点前的那个。 – Fernald 2012-07-06 17:04:52

+2

您可以四舍五入(小数)十进制日志来获取您的位数。 – 2012-07-06 17:06:20

回答

2
#include <math.h> 

//... 

int digits = (int) ceil(log10(number)); 

额外的逻辑为负数就留给读者做练习。

+1

不可以。请参阅顶部或我的回答评论。你必须整理,而不是放下,以获得数字的位数。 – 2012-07-06 17:17:27

+0

工作!谢谢! – Fernald 2012-07-06 17:17:56

+0

@dystroy感谢您的更正 – 2012-07-06 18:23:29

0

你可以做一个的NSString与你的价值和检查的长度考虑小数点。

Here'sNSString doc的参考资料,以便您可以检查这些方法的作用,以防您不了解它们。

编辑:如果你想在小数点前面你也可以在我贴出这样做的数字:

[stringNumber substringToIndex:[stringNumber rangeOfString:@"."].location].length 

然后在有条件的程序使用此值。

0
int digits = [[NSString stringWithFormat:@"%g", variable] length] 
-6
int myInt = (int) myFloat; 

sizeof(myint) 
+8

很简单,不。 – 2012-07-06 17:07:46

2

由于那里似乎不是一个正确的答案:

int digits = (int) ceil(log10(currentNumber));