NSExpressionを使って文字列の計算式の結果を求めようとしているのですが、"85.2596"と入力したところ、"85.25960000000001"となってしまいます。
例えば、"85.2596+1"を"86.2596"と表示したいのですが、どのようにすればいいでしょうか?
Swift
1let expression = NSExpression(format: "85.2596") 2print(expression as Any) // -> 85.25960000000001 3print(type(of: expression)) // -> NSConstantValueExpression 4 5 6let expression = NSExpression(format: "85.2596+1") 7print(expression as Any) // -> 85.25960000000001 + 1 8let result = expression.expressionValue(with: nil, context: nil) as? NSNumber 9print(result as Any) // -> Optional(86.25960000000001) 10let resultStr = result?.stringValue 11print(resultStr as Any) // -> Optional("86.25960000000001")
数値によってはdooubleValueで出力すると変になったりします。
swift
1let expression = NSExpression(format: "85.2596+85.2") 2let result = expression.expressionValue(with: nil, context: nil) as? NSNumber 3 4if let resultValue = result?.doubleValue { 5 print(resultValue) // -> 170.45960000000002 6} 7 8if let resultValue = result?.stringValue { 9 print(resultValue) // -> 170.4596 10}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/31 04:32
2021/01/31 06:53
2021/01/31 09:00