blog2017-03-21doubleの入出力で誤差を生みたくない話C++double型の値をtxtなどに保存して、次に読みだしたときに完全に元の値に戻す方法を備忘録がてら話します。0.123457となってしまい、勝手に四捨五入されてしまっています。この問題は、出力の桁数を設定することなどによりある程度回避することが可能ですが、やはりどこかで誤差が生まれてしまい、標準出力した後に標準入力すると元の値と変わってしまいます。2017年3月21日とリプを飛ばしてもらいました。intで表現できそうです。intにキャストすると以下のように小数点以下が落とされてしまいます。//->0そこで、共用体というものを使います*1。共用体とは、構造体のようなものですが、メンバ変数が同じメモリ上に配置されます。これが何を意味するかというと、同じメモリ上をchar型で読んだりint型で読んだりと色々な型で読み書きできるということです。int型に変換できそうです。実際に以下のように書いてみると、うまくいっているのがわかりました。0.1234567890追記ポテチプロからそれscanfとかでもできるよとのツッコミをいただきました。実際にやってみると共用体など使わなくても以下のように書けばできました。4593560419846153055型検査なんてものはないんですねという気持ちになりましたがまぁこれがC言語なのでしょう。いう関数がどうやって動いているのかとかもさっぱりなので勉強不足ですね、はい。追追記クッキープロからそれprintfだと怪しいよとのツッコミをいただきました。scanfできるならprintfもできるでしょと僕が勝手に付け加えたのですがそうではないようです。C言語は怖い言語です。検索はてなブログをはじめよう!gasinさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。