« 2009年04月 | メイン | 2009年07月 »
2009年06月10日
【講座】「教えて!おにたま!!」
はじめまして。
累乗を計算してたら、何か挙動がおかしいので困ってます。
HSPで累乗するために hspmath.as のpow関数を使っているのですが、
出てくる値を整数型に変えるとおかしい数になってしまいます。
2の3乗が7、2の6乗が63など・・・。
これは整数型に変えちゃだめなんですか?
int関数で変換しなくても、整数と一緒に計算しただけで
勝手に整数型になっておかしい数字になります。
計算がくるって正しい結果が出せません;
これはいったいどういうことか教えてくださいorz
10進数を2進数につたないながらも変換しようとしていました。。
<こたえ>
お便りありがとうございます。
HSP3の実数計算は、64bitの精度を持っていますが、計算の内容に
よっては誤差が出てしまうことがあります。
hspmath.asのpow関数は、累乗を求めるものですが、近似値を得る
ようになっているため、整数に変換した時に誤差が出ることが
あります。以下のスクリプトを実行してみてください。
#include "hspmath.as"
a=pow(2,3) ; 2の3乗を求める
mes a ; そのまま表示
mes strf("%.16f",a) ; 小数点以下16桁を表示
最初は、計算結果が代入されている変数の内容をそのまま表示
しています。この時は「8.0」ですが、実際に小数点以下の細かい
部分まで表示してみると、「7.9999...」という数値になっています。
int関数などで整数に変換すると、「7.9999...」の整数部分である
「7」だけを取り出してしまい、誤差が出ることになります。
ただ、そのまま表示した場合は、「8.0」になっている点が不可解です。
通常の実数表示では小数点以下6桁程度までを取るようになっていて、
その際に有効な桁から下は四捨五入しているため、このような結果に
なっているのです。
もし、この四捨五入された値で整数に変換したい場合は、一度
文字列型に変換してから、再度整数値に戻すといった方法を取ることも
可能です。
#include "hspmath.as"
a=pow(2,3) ; 2の3乗を求める
st=str(a) ; 文字列に変換
mes int(st) ; 整数として表示
ところで、10進数を2進数に変換という目的であれば、実数で計算を
行なう必要はないので、最初から整数ですべて行なうのも手だと
思います。また、2のn乗を計算するのであれば、演算子「<<」を
使うことができます。
以下は、2のn乗を求めるスクリプトです。
repeat 9
n=cnt
val=1 n ; 2をn乗する
mes "2^"+n+"="+val
loop
stop
それでは、またまた。HSPに限らず、PCのコトや
プログラミング関係どんなことでもお便り待っていますね。
(おにたま)
投稿者 usuaji : 01:41
【よみもの】ゆめゆめ日記 第4回
こんにちは、ゆめゆめゆうかです。
みんながHSPを勉強しだしたのは
いつごろなのかな・・?
中学生?高校生?
早い人だと小学生?
私が小学生とか中学生のころ
何してたんだっけ・・・
学校いってー
習い事いってー
塾とかいってー
本読んでー
絵描いてー
とかだったかな。
あんまり今とやってること
変わってないな(^_^;
こどものころにやってたことが
今お仕事になってるもんなーー。
こどものころの自分に感謝だなー。
HSP勉強してるみんなも
大人になって、お仕事になる人
いるかもね!
みんなは、どんな大人になりたいですか?
みんなに夢はありますか?
よかったらメールくださいね。
宛先は”うすあじ”( hsptv@hspcenter.com )まででーす。
(ゆめゆめゆうか)
投稿者 usuaji : 01:40
HSPTV!メルマガ 第72号
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HSPTV!メルマガ 第72号 N0.0072 2009/06/10 発行
編集長:うすあじ ( hsptv@hspcenter.com )
発行:HSPTV!(ONION software)
WEBサイト:http://hsp.tv/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
登録解除などはこちら http://hsp.tv/play/service.html
■はじめに
こんにちは、うすあじです。
またまたまた、お久しぶりです。
すっかり6月になってしまいした。
先日はhsp.tvのドメインが失効してしまい、
アクセス出来なくなるというトラブルが発生しました。
現在は問題なく使えますので、安心してください。
さて、ベータ版の新バージョンが公開です!!
HSP Ver3.2β3版ダウンロード 公開
http://www.onionsoft.net/hsp/hsp2beta.html
是非、ニューバージョンを試してみてください。
それでは、メルマガスタートです。
(うすあじ)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■今回のインデックス
【よみもの】ゆめゆめ日記 第4回 (ゆめゆめゆうか)
【講座】「教えて!おにたま!!」 (おにたま)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【よみもの】ゆめゆめ日記 第4回
こんにちは、ゆめゆめゆうかです。
みんながHSPを勉強しだしたのは
いつごろなのかな・・?
中学生?高校生?
早い人だと小学生?
私が小学生とか中学生のころ
何してたんだっけ・・・
学校いってー
習い事いってー
塾とかいってー
本読んでー
絵描いてー
とかだったかな。
あんまり今とやってること
変わってないな(^_^;
こどものころにやってたことが
今お仕事になってるもんなーー。
こどものころの自分に感謝だなー。
HSP勉強してるみんなも
大人になって、お仕事になる人
いるかもね!
みんなは、どんな大人になりたいですか?
みんなに夢はありますか?
よかったらメールくださいね。
宛先は”うすあじ”( hsptv@hspcenter.com )まででーす。
(ゆめゆめゆうか)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【講座】「教えて!おにたま!!」
はじめまして。
累乗を計算してたら、何か挙動がおかしいので困ってます。
HSPで累乗するために hspmath.as のpow関数を使っているのですが、
出てくる値を整数型に変えるとおかしい数になってしまいます。
2の3乗が7、2の6乗が63など・・・。
これは整数型に変えちゃだめなんですか?
int関数で変換しなくても、整数と一緒に計算しただけで
勝手に整数型になっておかしい数字になります。
計算がくるって正しい結果が出せません;
これはいったいどういうことか教えてくださいorz
10進数を2進数につたないながらも変換しようとしていました。。
<こたえ>
お便りありがとうございます。
HSP3の実数計算は、64bitの精度を持っていますが、計算の内容に
よっては誤差が出てしまうことがあります。
hspmath.asのpow関数は、累乗を求めるものですが、近似値を得る
ようになっているため、整数に変換した時に誤差が出ることが
あります。以下のスクリプトを実行してみてください。
#include "hspmath.as"
a=pow(2,3) ; 2の3乗を求める
mes a ; そのまま表示
mes strf("%.16f",a) ; 小数点以下16桁を表示
最初は、計算結果が代入されている変数の内容をそのまま表示
しています。この時は「8.0」ですが、実際に小数点以下の細かい
部分まで表示してみると、「7.9999...」という数値になっています。
int関数などで整数に変換すると、「7.9999...」の整数部分である
「7」だけを取り出してしまい、誤差が出ることになります。
ただ、そのまま表示した場合は、「8.0」になっている点が不可解です。
通常の実数表示では小数点以下6桁程度までを取るようになっていて、
その際に有効な桁から下は四捨五入しているため、このような結果に
なっているのです。
もし、この四捨五入された値で整数に変換したい場合は、一度
文字列型に変換してから、再度整数値に戻すといった方法を取ることも
可能です。
#include "hspmath.as"
a=pow(2,3) ; 2の3乗を求める
st=str(a) ; 文字列に変換
mes int(st) ; 整数として表示
ところで、10進数を2進数に変換という目的であれば、実数で計算を
行なう必要はないので、最初から整数ですべて行なうのも手だと
思います。また、2のn乗を計算するのであれば、演算子「<<」を
使うことができます。
以下は、2のn乗を求めるスクリプトです。
repeat 9
n=cnt
val=1 n ; 2をn乗する
mes "2^"+n+"="+val
loop
stop
それでは、またまた。HSPに限らず、PCのコトや
プログラミング関係どんなことでもお便り待っていますね。
(おにたま)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[PR]オススメHSP3の本
・はじめてのHSP3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■編集後記
さて、今回のメルマガでしたが、どうでしたか?
HSPやメルマガに関する質問、疑問、要望などがあったら
hsptv@hspcenter.com まで送ってください。
いよいよ関東地方は梅雨入りです。
洗濯物が乾かなかったり、ジメジメしたり、大変ですが、
頑張っていきましょう。
ではまた次回!
(うすあじ)
■バックナンバーについて
バックナンバーの公開ページはこちら
http://www.hspcenter.com/hsptvm/
■解約方法
登録解除などはこちら
http://hsp.tv/play/service.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
編集長:うすあじ ( http://hspcenter.com/ )
記事の投稿、ご意見、ご希望はこちらまで hsptv@hspcenter.com
ONION software Copyright 2009(c) All rights reserved.
メルマガ本文の再配布・商利用、転載は禁止させて頂きます。
HSPのスクリプトサンプルは自由に再利用しても構いません。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
投稿者 usuaji : 01:39