###前提・実現したいこと
Swiftで小数点以下まである数字のStringを、そのままの桁数でDoubleに変換したい。
例えば"444455.2"というStringは、そのまま444455.2というDoubleに変換したい。
###発生している問題・エラーメッセージ
変換後の小数点以下の数字が非常に小さい桁まで表示されてしまうのと、僅かなズレが発生してしまう。
###該当のソースコード
Swift
1var tmpString: String = "444455.2" 2var tmpDouble: Double! = Double(tmpString) 3// デバッグエリアで確認すると、tmpDoubleは「444455.20000000001」になっている
同じ事をPlaygroundで実行すると期待した通りの変換になる。
Swift
1var tmpString: String = "444455.2" 2var tmpDouble: Double! = Double(tmpString) 3// Playgroundの右側エリアで確認すると、tmpDoubleは「444455.2」になっている
###試したこと
Darwin(atof?)や、NSStringを使うという記事を見たので、試してみましたが結果は同じでした。
また、他の数字に変えてみても同じ現象になりました。
Swift
1import Darwin 2var tmpString: String = "444455.2" 3var tmpDouble: Double! = atof(tmpString) 4// デバッグエリアで確認すると、tmpDoubleは「444455.20000000001」になっている 5 6var tmpDouble: Double! = (tmpString as NSString).doubleValue 7// デバッグエリアで確認すると、tmpDoubleは「444455.20000000001」になっている
###補足情報(言語/FW/ツール等のバージョンなど)
macOS Sierra 10.12.5
Xcode 8.3.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/10 13:25
2017/07/11 01:23