2010-07-28 4 views
2

как получить цифры после десятичной точки из числа поплавка в Objective Cзнаков после запятой

+0

Как плавающие карты точно не соответствуют базовым номерам 10 Я думаю, вам нужно объяснить, что вы хотите для этого (например, 1./5. Не указывать число с двумя знаками после запятой) – Mark

ответ

1

ОК, это C-стиль, но я думаю, этот процесс будет таким же.

int decimals = (number -((int)number)); 

while(decimals > 0.0) 
{ 
    reportNextNumber((int)(decimals*10)); 
    decimals = (number -((int)number)); 
} 
+0

What's reportNextNumber()? Мой друг Google, похоже, тоже не знает. – curtisdf

+0

Будет ли это действительно работать из-за проблем с плавающей точкой? Если вы берете десятичный остаток от поплавка, в конце 'десятичных знаков 'вы могли бы получить нулевую цифровую цифру, отличную от нуля, которая действительно испортит этот расчет. Нет? – curtisdf

0

этот код работает

CGFloat x = 2.43; 
// CGFloat x = 3.145; 
// CGFloat x = 2.0003; 
// CGFloat x = 1.0; 
// CGFloat x = 3.1415926535; 

NSLog(@"%f -> %@", x, @([self numberOfFractionDigits:x])); 



- (NSString *)numberOfFractionDigits:(CGFloat)number { 
    CGFloat fractionalPart = number - (NSInteger)number; 
    NSMutableString *r = [NSMutableString stringWithString:@""]; 
    while (fractionalPart) { 
     [r appendFormat:@"%@", @((NSUInteger)(fractionalPart * 10 + .5))]; 
     number *= 10; 
     fractionalPart = number - (NSInteger)number; 
    } 
    return r; 
} 

выход:

2,430000 -> 43

3,145000 -> 145

2,000300 -> 0003

1,000000 ->

3.141593 -> 1415926535 // для x = 3.1415926535;

Смежные вопросы