HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
0406
通りすがりconst doubleで0.000000001が0になる4解決


通りすがり

リンク

2023/4/6(Thu) 22:49:23|NO.99261

下記コードを実行するとmes a*1000000000.0が1.0と表示されてほしいところが0と表示されます。


#const double a 0.000000001 mes a*1000000000.0 b=0.000000001 mes b*1000000000.0

当然bのほうは1.0と表示されます。

0.000000001ではなく0.000001だとうまくいくので桁数の問題だと思うのですが、既知の不具合でしょうか。



この記事に返信する


通りすがり

リンク

2023/4/6(Thu) 22:51:29|NO.99262

バージョンはHSP ver3.6です



zrs90(5さい)

リンク

2023/4/7(Fri) 08:31:57|NO.99264

3.4β4p のhistory.txt 内をテキストエディタの
検索で見た所、3.7β1 でこの件と思われる修正が
入っているようです

>#constで定義されたdouble型実数値の有効桁数が
>少なかった不具合を修正

2進数の小数点演算誤差の場合もあるので
何とも言えないのですが...



zrs90(5さい)

リンク

2023/4/7(Fri) 15:53:58|NO.99266

●#99264の追記

一応、下記のスクリプトを使って
3.6 と、3.7β4p で表示して見ました

3.7β4p では、ちゃんと定数定義(※書式指定有)
した値が表示され、最後の計算値も1.00000
が表示されました。
(※3.6 の場合、strf を使って表示すると
0.000...以下略 つまり、0 になっています)


iPhone から投稿してますので、タグ等が
上手く入ってなかったらすみません


#const double a 0.000000001 mes a mes strf("%3.12f", a) //書式指定パラメータはstrf 関数参照 mes a*1000000000.0



通りすがり

リンク

2023/4/7(Fri) 16:20:49|NO.99267

ありがとうございます。
3.7β4pで修正されていたのを知りませんでした。
お手数おかけしました。



ONION software Copyright 1997-2023(c) All rights reserved.