What’s the point in floating? 浮くには何の点があろうか。

So, you got creative in the last step and tried something like
さて、先ほどの段階で、ちょっとだけ想像力を使って、

printf( “An American size %d foot is about Japanese size %f.\n”,
11, 11 * 2.54 );
つまり、
printf( “アメリカサイズ %d 足は日本サイズではおよそ %f です。\n”,
11, 11 * 2.54 );

のように試してみたんでしょうか。

And you remembered to compile with the “-Wall” options,
そして -Wall の指定を忘れず

cc -o footsize -Wall footsize.c
つまり
cc -o footsizej -Wall footsizej.c

の命令でコンパイルして…

and the compiler told you something about arguments and int and double and … what is it saying? It looks like English, but it doesn’t make sense. You didn’t intend to argue with the computer!
なんと、 argument やら int やら double やら、丸でケンカを売っているようなわけわからない反応がコンピュータから出るのではありせん?英語かどうかわからないのですが、こんな言い合いになるつもりは全然無かったはずです。

But you remembered the “ls” command, and it looked like the program compiled, so you ran it anyway:
でも、 “ls” の命令を思い出して、コンパイルは出来たかの様子でしたので、一応、動かしてみようと思ったら

./footsize
An American size 11 foot is about Japanese size -687194767.
及び
./footsizej
アメリカサイズ 11 足は日本サイズではおよそ -687194767 です。

のような結果でした。

Yes, this computer is definitely picking an argument with you!
マサに、このコンピュータメ、ケンカ売ってんちゃうか?!

No, no, no, that’s not it at all. Like I say, I’ll tell you about the argument thing later, but this one is actually simple. (Said the mathematician.)
イヤイヤイヤ、全然ちがうよ。議論か、母数か、とにかく、もう少ししてあの argument のことをちゃんと説明いたします。今のところはそれほど難しくないのです。(数学者によるは。)

“%d” tells printf() to format the number as a decimal, uhm, integer. Err, well, that’s a decimal (base ten) number without any decimal point. (Ahem.) Numbers with decimal points are called “floating point” numbers in computer jargon. (Well, there are fixed point numbers, too, but that’s a story for quite a ways down the road.)
あの “%d” のことは、数字を、エエッと、十進法の整数としての形で出すように printf() に指示するのです。まあ、つまり、小数点無しの十進法数字、という感じです。(ゴホン)小数点付きの数字はコンピュータ専用後で、「浮動小数点」、つまり、 “floating point” 数字と言うのです。(正に、固定小数点もありますが、それは遥か先の話です。)

Clear as mud? Well, anyway, here’s how you do it:
泥水のように綺麗にまとめていますか?ごめん。とりあえず、やりたかったのはこんな構文になります。

printf( “An American size %d foot is about Japanese size %f.\n”,
11, 11 * 2.54 );
つまり、
printf( “アメリカサイズ %d 足は日本サイズではおよそ %f です。\n”,
11, 11 * 2.54 );

Notice, in particular, that the second percent symbol is followed, not by “d”, but by “f”. That would be “f” as in “floating point”, wouldn’t it?
特に注意してほしいのは、二番目のパーセントの後の字は “d” ではなく、 “f” になっています。つまり、浮動小数点の “floating point” の “f” ですね。

Picky, aren’t we?
コマかい、な。

Now, I would actually recommend “%g” rather than “%f”, but I don’t want to explain why just now, so let’s stick with “%f”.
では、私にすると、 “%f” の代わりに “%g%” の形式をお勧めしますが、今は説明したくないので “%f” のままにしましょう。

And now you can also do this with “%f”:
これで、 “%f” を利用して

printf( “A Japanese size %d foot is about American size %f.\n”,
27, 27 / 2.54 );
つまり
printf( “日本サイズ %d 足はアメリカサイズではおよそ %f です。\n”,
27, 27 / 2.54 );

のようにできます。

And you can download this sample program here. (I forget to put the “.c” on the file name, you’ll have to add that yourself when you save it.)
例文プログラムをここでダウンロードしていただけます。(ファイル名に “.c” を付けるのを忘れたので、保存するところ、自分でつけてください。)

So, now you know a way to work with fractional numbers, play around with a few. Next time, I’ll tell you a little about why computer programs have arguments.
さて、これで分数の扱う手順が見えてきます。ちょっと、遊んでみません?そして次回はコンピュータにあの argument なんかがある理由を少しでも説明させていただきましょう。

Next, let’s take about parameterizing things. 次は引数の話に行きましょう。

 

reiisi について

Joel Rees is a sometimes English teacher and sometimes programmer working and living with his family in Japan. ジョエルリースという者は場合によって英語講師、場合によってプログラマです。家族と共に日本に住んでいて、日本で仕事をしています。 You can find some of my projects at ボクのプロジェクトのいくらかを http://sourceforge.net/users/reiisi and 及び http://sourceforge.jp/users/reiisi/ にてご覧いただけます。
カテゴリー: C Primer, Computer Languages, Computer Programming, Computers パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です