- 366 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:05:19 ]
- >>245
ソース見たら、たぶん20行から28行までのところを、なんかしたら、なんかなるかもなぁ〜〜って気がしたんで、 そこのところをあてずっぽうでいじったら、456 って出た(^_^/わーい ソースの、ここのところを /* 各桁の数字を、有効な桁まで計算しておく */ for(i = 0, trunc = 0; i < 15; ++i) { m = modf(n, &n); buf[i] = (int)n; n = m * 10.0; ↓ こういうふうに変えてみたです。あとはいっしょです /* 各桁の数字を、有効な桁まで計算しておく */ double def = n; // ここと for(i = 0, trunc = 0; i < 15; ++i) { m = modf(n, &n); buf[i] = (int)n; n = ( modf( ((def+pow(10.0,-15)) * pow(10.0,i)), &n ) * 10.0 ); // ここ わかんないけど、「誤差とかが、掛け算で、かける10ってのを何度もしてると、誤差がでるのかなぁ〜」とかおもったので、 まいかい全部バ〜〜って、かける1000とかして一気にやったらどうかな?って思ってやったけどダメだったので、 しょうがないので0.00000......1 て小さい1足して、四捨五入しちゃえ〜〜 えいや〜〜ってやったら、なんか偶然456 ってなった。 よかった。 すいません、ぜんぜん知的じゃなくて(・_; 算数的な根拠はないです。なんかラッキー頼りですみません(orz はずぅ〜〜い
|

|