0

我现在有一点编码问题。我有一个带有 7 个不同选项的选择器,目前出于测试目的,我有一个标签,将显示选择器的所选值。

我遇到的问题是我的标签只显示整数,而不显示整个十进制数,有人可以帮助我,以便我可以获得选择器中所选项目的全部价值吗?

这是我的代码:

// returns the number of 'columns' to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 1;
}

// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return [tempList count];
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    return [tempList objectAtIndex:row];
}

- (void)pickerView:(UIPickerView *)pickerView
      didSelectRow:(NSInteger)row
       inComponent:(NSInteger)component {

   CGFloat chosenValue;

    switch (row) {
        case 0:
            chosenValue = 0.0000373;
            break;
        case 1:
            chosenValue = 0.0000273;
            break;
        case 2:
            chosenValue = 0.0000233;
            break;
        case 3:
            chosenValue = 0.0000204;
            break;
        case 4:
            chosenValue = 0.0000179;
            break;
        case 5:
            chosenValue = 0.0000169;
            break;
        case 6:
            chosenValue = 0.0000142;
            break;
        default:
            chosenValue = 0;
            break;
    }

NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
    formatter.numberStyle = NSNumberFormatterDecimalStyle;

self.testLabel.text = [formatter stringFromNumber:@(chosenValue)];


}
4

3 回答 3

2

您需要指定精度:

self.textLabel.text = [NSString stringWithFormat:@"%.7f", chosenValue];

格式说明%f符默认为 5 位小数。

而且您可能需要更改chosenValuedouble以获得足够的有效数字。

更好的是,由于您使用的是NSNumberFormatter,请设置小数位数:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
formatter.minimumFractionDigits = 7;
于 2013-07-10T16:24:16.160 回答
0

为什么不使用 NSString stringWithFormat 方法?

self.textLabel.text = [NSString stringWithFormat:@"%.10f", chosenValue];
于 2013-07-10T16:14:25.387 回答
0

尝试这个 :

self.testLabel.text = [NSString stringWithFormat:@"%.10f",chosenValue];

代替:

self.testLabel.text = [formatter stringFromNumber:@(chosenValue)];
于 2013-07-10T16:14:49.500 回答