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

Halving a number loses fractional part

我想在 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

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

你最好使用NSNumber拳击:

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

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