コンピュータに扱える数値には範囲があります。数値計算のプログラムを実行したとき正しい答えが表示されない場合があります。



コンピュータに扱える数値には範囲があります。


コンピュータで

数値計算のプログラムを実行したとき正しい答えが表示されない場合があります。




マックス 「よーし、 こんどは+、-、*、/の4つを


使った四則演算をしてみよう


(  *は掛け算を   

   /は割り算を   あらわします。)


これはどうだ。


#include <stdio.h>


int main(void)

{

printf("%d\n",(10000 + 888100-555) * 100000/ 55);


return 0;

}


マックス「コンパイル!。」


プログラムの実行結果

(EAZY IDECの場合)

(Visual Studio2018の場合)

(Visual Studio2019の場合)

-7996603


マックス 「むっむむ 電卓で計算すると


(10000 + 888100-555) * 100000/ 55)の計算結果は


1631900000


のはず?


なにがおこっている?


おーまいがー まいアプリ


どうなっているんだ?」


ぶーにゃん


「改良をくわえてマイクロソフトに売りにいくにゃん。」


ソーラー 「これは なに がおこっているんでしょうか?」


マックス「な~にぃぃぃ~」


てんC 「コンピューターはデリケートですね。」


ぶーにゃん 「ソーラーはこういうデリケートなのがすきにゃん。」


ソーラー 「ぽっ」


ソーラー 「とりあえず


この計算式の中の数値を


全てもっと簡単な数値にしてみましょう。」


#include <stdio.h>


int main(void)

{

printf("%d\n",(100 + 100-50) * 100/ 5);


return 0;

}


ソーラー 「これで、どうだっ


コンパイル」


プログラムの実行結果

(EAZY IDECの場合)

(Visual Studio2018の場合)


3000

続行するには何かキーを押してください_



(Visual Studio2019の場合)


3000


C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 11420) は、コード 0 で終了しました。

このウィンドウを閉じるには、任意のキーを押してください...




マックス


「いそいで電卓で計算するんだ。」


ソーラー 「はい 答えは・・・


3000


マックス 大丈夫ですよ。」


マックス


「ふう、 これくらい単純な計算だと大丈夫か。」


ソーラー


「どうも数値の桁数が大きくなるとまちがいがでるようですね。


パソコンのアクセサリの電卓は扱う数値がおおきくても


異常がでませんが。ふふ」


てんC 「ふしぎですね・・・」


ぶーにゃん 「こんな情報をみつけたにゃんよー


int, long は整数型のいれもの 


扱える範囲 32ビットの場合 -2147483648〜2147483647


整数値を出力するにはprintf文中で%d出力変換指定子をつかう」


マックス

ソーラー

てんC 


「全然、わかりません。」


ソーラー「む~~~~


int, longの型 は整数値のいれもの 


扱える範囲 32ビットの場合 -2147483648〜2147483647


か・・・」


マックス「 

int

long


は整数値の入れ物なのか?」


ソーラー 「


🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋

    int, longの型 は整数値のいれもの 


    扱える範囲 32ビットの場合 -2147483648〜2147483647

🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋🍋



これをみておもったんですが


もしかしたらコンピュータに扱える数値には範囲が


あるんじゃないでしょうか?


たとえば  -2147483648〜2147483647


の数値ならとりあつかえるとか・・・」


てんC


「それで桁数の大きい数値では


コンピュータは


その数値をとりあつかえず


計算できなかったので


正しい答えをprintf出力表示


できなかったと・・・」


マックス


「よーし それなら実験してみよう。


もし-2147483648〜2147483647の値しか


コンピュータがあつかえないなら


・・・・・・


これがコマンドプロンプト画面に表示できるかな?


これ、これ


         🍓1000000000000000000000さん🍓


いらっしゃい。


ためしに1000000000000000000000をprintf出力表示してみよう。


ちょっとたのしみだ。」












  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る