0

の平方根値を取得するために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変わりません。
どうしたの?

4

2 に答える 2

3

テキストフィールドの値が@"9.0001"のような場合、long long値を取得すると、小数部が切り捨てられます。doubleValueも試したとのことですが、次のようなことをしたと思われます。

int mainLabelValue = [mainLabelString doubleValue]; 

それ以外の:

double mainLabelValue = [mainLabelString doubleValue]; 

最初のケースでは、intは小数部を格納できず、long long intも格納できないため、数値も小数部を失います。
テキストフィールドのdouble値を正確に取得しようとした方法を教えてください。

于 2012-12-01T14:11:13.750 に答える
1

それを使用するNSNumberFormatterと、非常に広範囲でさまざまなスタイル(Decimaland Scientificなど)が提供されます。ドキュメンテーション

于 2012-12-05T19:07:55.653 に答える