如标题所述,如果我有一个浮点数,我需要将小数部分作为整数,我该怎么做?
我在想:
有更好/更聪明的方法吗?
更新
我忘了提一下,浮点数的格式如下:X.YZ所以小数点后最多有两位数。
答案 0 :(得分:9)
您使用modf功能:
double integral;
double fractional = modf(some_double, &integral);
答案 1 :(得分:5)
float temp=12.123;
NSString *str=[NSString stringWithFormat:@"%f",temp];
NSArray *arr=[str componentsSeparatedByString:@"."];
int tempInt=[[arr lastObject] intValue];
答案 2 :(得分:4)
NSString *str = [NSString stringWithFormat:@"%f", value];
NSArray *arr = [str componentsSeparatedByString:@"."];
int num = [[arr objectAtIndex:1] intValue];
答案 3 :(得分:2)
我们举一个例子: x = 129.567;
将x转换为整数并放入y。 y = int(x); 所以y = 129;
现在从x中减去y。 所以z = x-y; z = .567
z = z * 1000; 所以z = 567
我认为那就是你要找的东西。
答案 4 :(得分:1)
如何获取浮点并乘以1000并将结果转换为整数?
答案 5 :(得分:0)
查看NSDecimalNumber
和NSDecimal
。
答案 6 :(得分:0)
Float永远不会代表一个准确的数字。最好的方法是从“double”数字创建一个字符串,然后进行字符串操作以获得小数点后的数字。
答案 7 :(得分:0)
这是我的解决方案:
float value = 12.345f;
float integral;
float divisor = 1000.0f;
float fractional = modff(value, &integral); // breaks a float into fractional and integral parts
int xyz = (int)fmodf(fractional*divisor, divisor); // modulo (cannot just use %)
NSLog(@"XYZ: %d", xyz); // logs "XYZ: 345"
通过更改divisor
的值,您可以获得所需的精度,例如只有XY(100.0f)或X(10.0f)。
解决方案不是最高效的,但很有用。我认为可以使用按位运算进行优化。
使用“f”的注意事项: