« HSPTV!メルマガ 第63号 | メイン | 【よみもの】もーりおのつぶやき 第32回 »
2008年08月01日
【講座】「教えて!おにたま!!」
<高田 さんからのおたより>
現在HSP3では、通常、どうも小数点以下6桁まで計算する
ようですが、これを、小数点以下8桁まで計算させることは
できるのでしょうか。
(ヘルプファイルのどこを参照すればいいのでしょうか。)
実は、レンズ設計を勉強中で、光線追跡の計算をHSPで
やらせたいと思っています。そのため出来れば、8桁まで、
なのですが、6桁まで、ということでしたら、それはそれで
ある程度使えるとは思いますが・・・。
よろしくお願いします。
<こたえ>
お便りありがとうございます。
HSP3の実数計算は、64bit浮動小数点という形式を使って
行なわれています。これは、小数点の位置を数値ごとにうまく
ずらすことで、非常に小さな小数値も、巨大な数でも表現
することができる頭のいい方法です。
で、通常の表示では確かに小数点以下6桁までしか表示
されていません。たとえば、以下のスクリプトでは
「1÷3」ということで「0.333333」が表示されます。
a = 1.0 / 3
mes a
しかし、内部ではもっと細かい値まで計算されています。
strf関数を使って、表示桁数を指定してみましょう。
a = 1.0 / 3
mes strf("%.16f",a)
この例では、小数点以下16桁まで表示しています。
さっきも書いたように、浮動小数点は小数が移動するので、
必ず小数点以下16桁が有効になるわけではありません。
たとえば、「10.333」のように整数部分が2桁ある場合は、
小数点以下の桁数もそれに引きずられて少なくなります。
ただ、小数点の位置は別にして、だいたい15~16桁程度まで
計算することができるようになっています。
通常、6桁までしか表示していないのは、あまりにも桁数が
多い時にかえって読みにくくなるのを抑えるためと、それほど
小数点以下の精度が必要な場面が少ないと考えているためです。
内部では、もちろん高い精度で計算されています。あくまでも、
表示の時に少ない桁数になってしまっているだけです。
それでは、またまた。HSPに限らず、PCのコトや
プログラミング関係どんなことでもお便り待っていますね。
(おにたま)
投稿者 usuaji : 2008年08月01日 11:46
口臭チェッカー市場