如何分割数字和整数?

3

我试图对两个整数进行除法运算,但无论如何结果都返回零。我应该使用浮点数吗?我只是无法让它正常工作。我已经尝试过使用浮点数,但得到了奇怪的结果。以下是我的代码:

    NSUInteger someNumber = 156;
    NSUInteger points = 597;
    NSUInteger otherNumber = 5;
    NSUInteger difference = (someNumber - points);
    NSLog(@"%d", difference);
    NSUInteger divide = (difference / otherNumber);
    NSLog(@"%d", divide);
    NSUInteger multiply = (divide * 4826);
    NSLog(@"%d", multiply);
    NSUInteger total = (358 - multiply);
    NSLog(@"%d", total);

任何帮助都会非常感激,谢谢。

1
"NSUInteger" 中的 "U" 代表 "无符号",因此上面的 difference 值不会是您预期的值。同样,"NSUInteger" 中的 "Integer" 意味着您正在处理整数,因此 divide 的结果也不会是您预期的值。请改用支持实数的类型,例如 float 或 double。 - Caleb
4个回答

10

整数除法会截断结果。如果要对两个整数 ij 进行除法并获得小数部分,您可以使用以下简单表达式。对于复杂的代码表达式,则需要像使用浮点运算一样谨慎(包括防止除以零、精度损失和溢出等)。

r = (float) i / j;
r = (double) i / j;

1

NSUIntegers的最小值为0。如果你预计会有负数值,那么应该使用NSInteger。


我不期望负值,但我却得不到任何值...XD - 0SX
156 - 597(someNumber - xp)产生一个负值。 - Mark Adams
哎呀,我刚才只是随便打了几个数字来演示。这是我的错,抱歉。 - 0SX

1

尝试使用字符串格式化器%u


-1

我终于修好了!!! 我必须将 difference 更改为 float。

NSUInteger difference = (someNumber - points);

float difference = (someNumber - points);

这种情况下这样做是行不通的: NSNumber *someNumber = [NSNumber numberWithFloat: (4 / 3)]; 你会得到一个整数结果,除非像Catcall说的那样,将其中一个数字强制转换为(float)或(double)。 - Tim Sullivan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接