タイトル通りの内容になります。
【やりたいこと】
double a = 0.000
a = 0にする
double b = 1.0000
b = 1にする
double c = 1.500000
c = 1.5 にする
double d = 0.32000
d = 0.32にする
のようにいくつか例をあげましたが
小数点以下の有効じゃない0を消したいです。
桁数は持ってくる値によってバラバラなので、可変的にしたいです。
実際には2進数で保持しているので
例えばd=0.1とした場合、代入されるのは0.10000000000000000555111512312578270211815834045…ですけどどうするんです?
浮動小数点数には端数は付き物です。たとえば、1.000000001などの場合はどうしますか?
printf()などで表示するだけなら桁数指定が出来ますが?
また、他の方が言われているように、小数点以下の0もその桁まで“0が保証されている”という事ですから有効桁と考えますが?・・・どうでしょうか?
一般的な環境の浮動小数点数では「0.32」という値は正確に表現できないのですが、そこはどうしますか?
"有効数字"ってなんでしょうか?
浮動小数点という事なので、内部は二進数。従って、二進数の有効桁数はあっても十進数での有効桁数は無いと思います。
どこかのスクリプト風に, 数値 と 数字(文字列) を混同されているのでしょうか.
「printf で a/b/c/d を表示したら 0.000/1.0000/1.500000/0.32000 と出た, 後ろの 0 が要らない...」
ということですか?
浮動小数点演算は丸め誤差が発生するので、有効数字が正確に合っている桁数を指して言っているのだとしたら、「精度保証付き数値計算」ができるライブラリをお使いください。
