文字列の数式を正確に計算したいです。
例えば、"(1.2345 - 1.2340) * 1000"をDoubleで計算すると0.4999999999999448になってしまいます。
どのようにすれば、文字列の数式を正確に計算できますか?
NSDecimalNumberをNSExpressionを使って計算しようと思ったのですがうまくいきませんでした。
できればDecimal型にしたいです
swift
1import UIKit 2 3 4(1.2345 - 1.2340) * 1000 5 6var eqn = "(1.2345 - 1.2340) * 1000" 7var a = NSDecimalNumber(string: "1.2345") 8var b = NSDecimalNumber(string: "1.2340") 9var c = NSDecimalNumber(string: "1000") 10 11 12func + (lhs: NSDecimalNumber, rhs: NSDecimalNumber) -> NSDecimalNumber { 13 return lhs.adding(rhs) 14} 15 16func - (lhs: NSDecimalNumber, rhs: NSDecimalNumber) -> NSDecimalNumber { 17 return lhs.subtracting(rhs) 18} 19 20func * (lhs: NSDecimalNumber, rhs: NSDecimalNumber) -> NSDecimalNumber { 21 return lhs.multiplying(by: rhs) 22} 23 24func / (lhs: NSDecimalNumber, rhs: NSDecimalNumber) -> NSDecimalNumber { 25 return lhs.dividing(by: rhs) 26} 27(a - b) * c 28 29let exp = NSExpression(format: eqn) 30exp.expressionValue(with: nil, context: nil) as? NSDecimalNumber
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。