読者です 読者をやめる 読者になる 読者になる

ケロロ好きなエンジニアのブログ

サラリーマンエンジニアの電子工作のことをメインに書いていきたいけど電子工作はまとまった時間がないとなかなか難しいから滅多に書けそうもなくてMVNOの話題がメインになりつつあるブログ

2013年9月にseesaaより移転してきましたので、それ以前の記事はうまく読めない場合があります。

追記とお礼:ドコモの請求書に42億の金額が!

にほんブログ村 スマホ・携帯ブログ スマートフォンへ にほんブログ村 スマホ・携帯ブログへ にほんブログ村 スマホ・携帯ブログ 格安SIMカード・MVNOへ

スポンサーリンク

昨日のこの記事

keroctronics.hatenablog.com

書いた直後から、私のブログ始まって以来のケタ違いの脅威のアクセス数、はてブ数、リツート、いいね等々をいただき、注目度の高さにびっくりしています。

 

ブコメの中にも多く書かれていますし、また、コメント欄にてあけぼのさんにも詳細に解説していただいておりますが、ほぼ間違いなく理由はそれでしょう。

 

ちなみにドコモへのWEBからの問い合わせではすが、
My docomoのIDでログインして質問送ったのに、お客様情報保護の観点から云々言われてメールでは回答は得られませんでした。
時間の取れた時にでも151に言って見る予定です。

 

さて、理由ですが、内部処理の問題ですね。

エンジニアでもあり昔はソフトも書いてた自分ですが気づきませんでした。ぉ恥ずかしい。。。
65536とか1600万とかなら気づいたかと思いますが、42億はダメだ。。。
古い人間ってことですね。。。


コメントが非常にわかりやすいので改めて言うまでもありませんが、一応書いてみます。
もし間違っていたらご指摘いただけると幸いです。


32bitの変数の場合、取り得る数字の範囲は
unsignedの場合は、0000_0000H(0)~FFFF_FFFFH(4,294,967,295)
signedの場合は、8000_0000H(-2,147,483,648)~7FFF_FFFFH(2,147,483,647)
となります。

今回の場合は、まずはファミリー割引料として-1040円ですから
-1040(Dec)→FFFF_FBF0(Hex)で格納されていることになります。

これをsignedでなくunsignedで扱ってしまうとFFFF_FBF0(Hex)→4,294,966,256(Dec)となり明細書の値とドンピシャとなります。

 

同様に、eビリング割引料の-20円も
-20(Dec)→FFFF_FFEC(Hex)
→4,294,967,276(Dec)
となり、これまた明細書の値とドンピシャってことですね。

 

f:id:keroctronics:20151007224310j:plain


まぁ確かにプログラム作成上ではよくあるバグかもしれませんが、天下のドコモでしかも請求書とか明細書っていうお金が絡んでくるところでこのようなバグがあるまま運用されているってのはちょっと信じられません。
今まではちゃんと動いてたわけですし。

 

顧客によってプログラムが違うとは思いにくいので、おそらく私以外にも同様な方もいらっしゃるかと思いますが、合計金額には影響が無いようですので気づきにくいのかもしれませんね。

ご指摘いただいたみなさんありがとうございました。