更精确的值的平方根

时间:2012-12-01 13:55:45

标签: objective-c ios xcode

要获得mainlabelString的平方根值,我正在使用

- (IBAction)rootPressed:(id)sender
{

    NSString *mainLabelString = mainLabel.text;

    int mainLabelValue = [mainLabelString longLongValue];

    NSString *calculatedValue = [NSString stringWithFormat: @"%f", sqrt(mainLabelValue)];

    mainLabel.text = calculatedValue;

}

虽然它确实可以使用88这样的数字,但是我得到的是9.380832,但它并不适用于那个数字,因为它表示平方根是3.000000(而不是3.062814)。 我尝试将longLongValue替换为doubleValueintegerValue,但不会更改它 怎么了?

2 个答案:

答案 0 :(得分:3)

如果文本字段中的值类似于@“9.0001”,则获取long long值会截断小数部分。您说您也尝试过doubleValue,但我怀疑您做了类似的事情:

int mainLabelValue = [mainLabelString doubleValue]; 

而不是:

double mainLabelValue = [mainLabelString doubleValue]; 

在第一种情况下,数字也会丢失小数部分,因为int不能存储小数部分,也不能存储long long int。
让我知道您是如何确切地尝试检索文本字段的双精度值。

答案 1 :(得分:1)

使用NSNumberFormatter它提供了非常广泛和不同的风格(Decimaland scientific等)。documentation