Objective c 更精确的值的平方根

Objective c 更精确的值的平方根,objective-c,ios,xcode,Objective C,Ios,Xcode,要获得mainlabelString的平方根值,我使用 - (IBAction)rootPressed:(id)sender { NSString *mainLabelString = mainLabel.text; int mainLabelValue = [mainLabelString longLongValue]; NSString *calculatedValue = [NSString stringWithFormat: @"%f", sqrt(main

要获得
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)。
我尝试用
doubleValue
integerValue
替换
longvalue
,但没有改变它。

怎么了

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

int mainLabelValue = [mainLabelString doubleValue]; 
而不是:

double mainLabelValue = [mainLabelString doubleValue]; 
在第一种情况下,数字也会丢失小数部分,因为整数不能存储小数部分,长整数也不能存储小数部分。

请告诉我您到底是如何尝试检索文本字段的双精度值的。

如果文本字段中的值类似于@“9.0001”,则获取long-long值会截断小数部分。您说您也尝试了双精度值,但我怀疑您做了如下操作:

int mainLabelValue = [mainLabelString doubleValue]; 
而不是:

double mainLabelValue = [mainLabelString doubleValue]; 
在第一种情况下,数字也会丢失小数部分,因为整数不能存储小数部分,长整数也不能存储小数部分。

让我知道您是如何准确地检索文本字段的双值的。

使用
NSNumberFormatter
它提供了非常广泛的不同样式(十进制和科学等)。

使用
NSNumberFormatter
它提供了非常广泛的不同样式(十进制和科学等).

在这里发布之前,您应该做更多的研究。这是你在过去三个小时内第三次发布这段代码,并提出了不同的问题。在发布之前,你应该做更多的研究。这是过去三个小时内您第三次发布这段代码,并提出了不同的问题。