この質問に似た問題があります: NSDecimal または NSDecimalNumber のフォーマットされていない文字列表現を取得するにはどうすればよいですか? NSNumber として正確に表現された文字列形式の数値が必要ですが、この数値は別の場所で文字列に変換されるため、それを避けることはできません。私が抱えている問題は、数値が文字列に変換されると、文字列が科学表記法になる場合があることです。
NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithString:@"0.0001"];
NSString *s = [dn stringValue]; // s will be @"1E-4"
この数値が科学表記法で表示されないようにするにはどうすればよいですか?
私はMacやiPhoneではなく、GNUstepの2005年頃のバージョン(おそらくGNUstep Baseのv1.11.1)で作業しています。これは、参照した他の質問との動作の違いの一部を説明する可能性があります。私自身の GNUstep インストールの基本ライブラリ APIとドキュメントを調べましたが、役立つものは何も見つからないようです。
編集 2/7/12:
質問は少し変わりましたが、目標は同じです。もともと、文字列出力部分を制御できるとは思っていませんでしたが、値を文字列として返すことができました。この時点で、フォーマット文字列を使用しようとしていますが、科学表記法が表示されないようにしたいと考えています。
[NSString stringWithFormat:@"%1.14g", [val doubleValue]]
%g
値に特定の有効桁数が必要なため、使用することにしました。を使用する%f
と、余分なゼロを削除できますが、数値が常にきれいに表示されるとは限りません。たとえば、800000000.79 は 800000000.7899999600 と表示されます。
その桁数の前に科学表記法を表示せずに、特定の有効桁数 (または小数点以下の桁数) までのきれいにフォーマットされた数値を取得する方法はありますか?
Cのアドバイスも喜んで受け入れます。