7
Javaの解析に使用できるデータ型はどれですか?BigDecimal
? Objective-Cでは、NSDecimalNumber
を使って実行できます。スウィフトネイティブソリューション(NSDecimalNumber
を使用しない)はありますか?SwiftのJava BigDecimal
Javaの解析に使用できるデータ型はどれですか?BigDecimal
? Objective-Cでは、NSDecimalNumber
を使って実行できます。スウィフトネイティブソリューション(NSDecimalNumber
を使用しない)はありますか?SwiftのJava BigDecimal
迅速なネイティブソリューションと言っているように、これはあなたが望むものではないかもしれません。 Swift 3では、古いC-structのNSDecimal
がDecimal
としてインポートされています。これは、 "それはほぼスウィフトネイティブです"と言って大きな変更が行われました。
let deca = 1.23 as Decimal //<- This actually may produce some conversion error, while `ExpressibleByFloatLiteral` uses `Double` as an intermediate value.
let decb = 0.01 as Decimal
print(deca + decb == 1.24) //->true
UPDATEはあなたがダブル(2進浮動小数点システム)で計算エラーを見つけることができる簡単な例を、追加しました。 (Xcode 8ベータ6でテスト済み)
let dblc = 0.000001
let dbld = 100 as Double
let dble = 0.0001
print(dblc * dbld == dble) //->false (as Double cannot represent decimal fractions precisely)
let decc = Decimal(string: "0.000001")! //<- avoiding conversion error
let decd = 100 as Decimal //<- integer literal may not generate conversion error
let dece = Decimal(string: "0.0001")!
print(decc * decd == dece) //->true
「NSDecimalNumber」を使用してください。それはSwiftからうまく動作します。 – Rob
あなたはわかりません。私はSwiftソリューションのネイティブが必要です(もちろん、存在する場合)。 – SerjOxo
わかりました。 「ネイティブ」ソリューションは存在しません。しかし、 'NSDecimalNumber'は正常に動作します。また、必要に応じて、ネイティブソリューションのように動作するように演算子を定義して、 '+'、 ' - 'などの演算子を期待どおりに動作させることができます。 – Rob