将数字减半会丢失一小部分

时间:2015-08-18 18:10:25

标签: objective-c floating-point division

我想在UILabel上显示数字的减半值。为此,我尝试使用UITextField获取号码,将数字从NSString格式化为NSNumber,然后除以2。

之后我想在UILabel上显示它,但它在逗号(十进制标记)后面没有显示任何内容。不知道怎么解决这个问题?我只需要两个数字后面的逗号。

这是我当前的UIButton代码:

// first get the input
NSString *inputValue = self.numberInput.text;
NSLog(@"given number: %@", inputValue);

// divide the input by 2 & get the output
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [formatter numberFromString:inputValue];
NSNumber *toDivide = [NSNumber numberWithFloat:2];

NSNumber *dividedNumber = [NSNumber numberWithInt:[myNumber floatValue] / [toDivide floatValue]];
NSLog(@"divided value: %@", dividedNumber);

// print it out on the firstBill Label
self.firstBill.text = [NSString stringWithFormat:@"%.2f",[dividedNumber floatValue]];

示例输出:

2015-08-18 20:03:02.021 Week one[1364:37640] given number: 123.54
2015-08-18 20:03:02.022 Week one[1364:37640] divided value: 61

我需要像

这样的东西
2015-08-18 20:03:02.021 Week one[1364:37640] given number: 123.54
2015-08-18 20:03:02.022 Week one[1364:37640] divided value: 61.77

1 个答案:

答案 0 :(得分:5)

您正在使用numberWithInt:来存储分部的结果;这会丢弃任何小数部分。

你最好使用NSNumber拳击:

@([myNumber floatValue] / [toDivide floatValue])

编译器知道表达式的类型,并将为您使用正确的NSNumber构造函数。