introbotics’s blog

人工知能、機械の心について思いついたことを並べてます

スポンサーリンク

今日のバグ キャストというかintとdoubleと文字列の変換

9/21 修正メモ

 

1.ファイルから文字列を読み込み

2.int型に変換

3.余りを求める(変数%100とかで) ※double型で余りを求めるのが大変

4.結果をdouble型に変換

 

という式を使っていた。

 

w = (double)((int)j % 10000 / 100);

w:double

j:文字列(char *)

 

上記の場合、文字列→intへの変換が正常に行われない場合がある

(半分くらいはうまくいく)

 

原因は定かでないが、文字列に数字が入り込み、別の数値に変わる様子。

このせいで0が48や24や-92とかになった。

 

正しくは

w = (double)(atoi(j) % 10000 / 100);

っぽい

 

原理はともかく上記で動いたのでヨシ!

しかし、すぐ上にも同じ動きをする数式があり、そちらは修正していた。

なぜこいつだけおかしな事をしていたのか。

そしてなぜ今まで正しく動いていたのか

 

謎だ