問題タブ [nsdecimalnumber]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
730 参照

objective-c - この標準偏差法を高速化する

平均を指定して、NSNumber整数の配列の標準偏差を計算するこのメソッドがあります。この計算では、最高の解像度を維持するために NSDecimals が使用されます。これは現在、多くの CPU サイクルを要求しています。必要な解像度を維持しながら高速化するための助けをいただければ幸いです。ありがとうございました。

0 投票する
2 に答える
6738 参照

objective-c - NSDecimalNumber を double に変換する方法

NSDecimalNumber として格納されている値があり、それを double に変換すると精度が失われます。

現在デバッグしているデータの場合、値は 0.2676655 です。doubleValue メッセージを送信すると、0.267665 が返されます。丸めではなく切り捨てを行っており、ハッシュを使用して同期操作のデータ変更を検出する一部のコードに大混乱をもたらしています。

NSDecimalNumber インスタンスはサードパーティ フレームワークに由来するため、単純にプリミティブ double に置き換えることはできません。最終的には NSMutableString に挿入されるため、文字列表現を求めていますが、「%.6lf」のフォーマット指定子を介して渡す必要があります。基本的には、小数点以下 6 桁が必要なので、0.267666 のようになります。

精度を落とさずにこれを達成するにはどうすればよいですか? double に変換せずに NSDecimalNumber をフォーマットする良い方法があれば、それも機能します。

0 投票する
1 に答える
2567 参照

objective-c - NSNumberFormatter、NSDecimalNumber、および科学表記法

私は NSNumberFormatter と深刻な論争を抱えており、その広範なドキュメントを調べた後でも、遭遇した非常に単純な問題に頭を悩ませることができませんでした. 皆さんが私を助けてくれることを願っています。

私が持っているもの:NSDecimalNumberで表示される計算結果を表すUITextField
必要なもの: その結果の科学的表記。

私がやっていること:

何が起こるか:
特定の結果が 0.0099 になる場合があります。textBeforeその正しい値を保持します。フォーマッタに 10 進数を生成するように指示しないと (上記のスニペットでコメントアウトされています)、NSDecimalNumber から NSNumber が作成され、偽の結果が生成され、0.009900000000000001 になりますtextAfter。 NSDecimalNumber.
NumberFormatter に小数を生成するように指示しても、それでも間違った結果が作成されます。さらに、指数表記 (例: "1.23456e-10") を挿入する前に、完全な 10 進数を生成 (したがって表示) しますが、これは私が望むものではありません。
繰り返しますが、フォーマッタで NSDecimalNumber を使用するようにしたいので、'


クラスの使い方が間違っていますか?ドキュメントを誤解しましたか?なぜこれが起こるのか、どうすれば私が望む動作を作成できるのかを誰かが説明できますか? もちろん、何かを見つけたら、調査を続けて更新します。

0 投票する
3 に答える
1231 参照

c# - `NSDecimal` または `NSDecimalNumber` から C# の `decimal` 型への変換

NSDecimalNumberStoreKit のクラスからを取得しました。これを C# の型に変換して、精度の低下を最小限に抑えSKProductたいと考えています。decimalそのようなことを行う簡単な方法はありますか?

私の2つの選択肢は次のとおりです。

  1. それぞれのバイナリ実装を理解し、独自のビット単位の変換を行うと仮定します。または
  2. NSDecimalNumberに文字列を渡して、それをdecimal解析してもらいました。

オプション 1 は手間がかかりすぎて、もろくなる可能性があるので、オプション 2 を使用する傾向があります。(非常にまれにしか発生しないため、どれだけ遅くても我慢できます。

0 投票する
2 に答える
3857 参照

ios - NSDecimalNumber の設定と値の取得

私は次のプロパティを持っています:

テキストフィールドから値を設定しようとしています:

次の警告が表示されます。

また、次のような値を取得しようとすると:

エラーが発生します:

以前に NSDecimalNumber を使用したことはありませんが、Google で通貨を扱うときに使用されることを確認しました。誰かが私がやろうとしていることを実行できるヘルパー関数を指摘できますか?

ありがとう

0 投票する
1 に答える
176 参照

cocoa-touch - NSDecimalNumber 値のセットのフォーマット

私はいくつかの数値セット (現在は として保存されていますNSDecimalNumber) を取り、それらを列に表示する必要があるアプリに取り組んでいます。各セットのマグニチュードはほぼ同じですが、各セットのマグニチュードは変わる可能性があり、それらが何であるかは前もってわかりません。したがって、1 つは (1.23、2.3、1.567) のような値であり、もう 1 つは (1234.1、2345、1999.4) のような値です。

列を整列させ、必要なスペースを知るために、数値のセットごとに、必要なフォーマットの幅を把握する必要があります。つまり、整数桁の最大数と小数桁の最大数です。上記の例では、最初のケースでは 1 と 3、2 番目のケースでは 4 と 1 です。

ここで、NSDecimal表現は、仮数の長さと指数の値を組み合わせることにより、これに直接答えます。問題は、その構造体のフィールドが明示的に非公開であり、そこから仮数と指数の値を取得する API がないように見えることです。

回避策として、各数値を POSIX ロケールの文字列に変換し、その長さと小数点の位置を測定することが考えられます。しかし、それは非常に長い道のりのようです。

私の C 数学はかなり大ざっぱですが、10 進数を に変換し、doubleそれを調べて (標準ライブラリ関数を使用するか、ビットを突いて)、いくつかのログを作成することで、この情報を取得する方法があると思います。どのように正確なのか、または損失のある表現への変換について心配する必要があるのか​​ どうかはわかりません。

この情報を取得するためのより直接的かつ/またはより効率的な方法はありますか?

0 投票する
2 に答える
1326 参照

objective-c - NSDecimalNumber の NSDecimalNumber 乗

2 つの NSDecimalNumbers があり、一方を他方のべき乗に適用する必要があります。元々、このコードは double を使用していたので、次のように pow() 関数を使用してこれを計算できました。

私が抱えている問題は、NSDecimalNumbers を使用するようにコードを変換していることです。toThePowerOf メソッドが含まれていますが、int 値しか受け入れません。現時点では、この問題に対する唯一の解決策は NSDecimalNumbers を一時的に変換することですが、これにより精度が失われます。

NSDecimalNumbers を使用してこの計算を行い、精度を失わないようにする方法はありますか?

たとえば、整数以外の値を処理するには、これが必要です。

0 投票する
7 に答える
2499 参照

iphone - NSDecimalNumber が整数かどうかを確認します

のインスタンスが整数かどうかを確認する最も簡単な方法は何NSDecimalNumberですか?

ありがとう!

0 投票する
1 に答える
1293 参照

objective-c - DecimalNumberByAdding はどのように機能しますか?

2 つの NSDecimals を追加する必要がある状況があり、これが私が持っているコードです。

0.01 と 0.02 などの 2 つの数値を加算しようとすると、完全に機能し、0.03 が得られます。

しかし、整数を使用すると機能しません。例として、0.01 と 1 を加算しようとすると、結果として負の数が返されます。誰でもこの問題で私を助けることができますか?

ありがとう

0 投票する
1 に答える
727 参照

iphone - NSDecimalNumber から文字列を短縮し、K は数千、M は数百万などを表します

重複の可能性:
int を短くフォーマットされた文字列に変換する

NSDecimalNumberの値を次の文字列に変換したいと思います。

5 ~ 6 桁の数字は K を使用して千を表し、3 つの有効数字を持ちます (例: 54,321 ---> 54.3K、654,321 ---> 65.4K)。

7 桁から 9 桁の数字は M を使用して百万を表し、3 つの有効数字を持ちます (例: 7,654,321 --> 7.65M、987,654,321 ---> 9.88M)

10 桁以上の数字は B を使用して 10 億を表し、有効数字は 3 桁です

これを行うための最良の方法に関する提案はありますか? ありがとう。

(同様の質問をいくつか見ましたが、Objective-C/iOS に関するものはありません。)