jsに関する質問です

累積比率パレートマン
記事: 33
登録日時: 2022年1月12日(水) 01:12

jsに関する質問です

投稿記事by 累積比率パレートマン » 2023年9月24日(日) 13:39

エンジニアの皆様

開発お疲れ様です。

jsのMath.floor関数に関するご質問があります。

トリアコンタン様の、「変数の小数演算ブラグイン」を適用した変数において

初期値に100が代入された$gameVariables.value(1)に、以下のように0.05を減算していたら

32のところで、31.99になってしまいます。

コード: 全て選択

$gameVariables.setValue(1,$gameVariables.value(1)-0.05);
$gameVariables.setValue(1,Math.floor($gameVariables.value(1) * 100) / 100);


sfdkajklda.png
sfdkajklda.png (5.26 KiB) 閲覧数: 519 回


これはなぜでしょうか。

小数切り捨てのMath.floor関数なのに

なぜズレるのか、分かる方がいらっしゃいましたら

お知恵をお貸しいただけますと幸いです。

アバター
Plasma Dark
記事: 676
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: jsに関する質問です

投稿記事by Plasma Dark » 2023年9月24日(日) 16:13

2進数で表せない小数点は近似値で表されるため、丸め誤差が生じます。
https://zenn.dev/ymmt1089/articles/20220603_big_number

32.05 - 0.05 の時点で誤差が生じて、 31.999999999999996 になってしまいます。
それを100倍して Math.floor を使っても 3199 になります。
アバター
Plasma Dark
記事: 676
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: jsに関する質問です

投稿記事by Plasma Dark » 2023年9月24日(日) 16:22

ところで、本スレッドの内容と直接関係がなく恐縮ですが、こちらの問題は解決されているでしょうか。
viewtopic.php?f=23&t=13639&p=49971#p49956
累積比率パレートマン
記事: 33
登録日時: 2022年1月12日(水) 01:12

[解決済み]Re: jsに関する質問です

投稿記事by 累積比率パレートマン » 2023年9月24日(日) 17:32

Plasma Dark 様

ありがとうございます!

詳しく教えてくださり、ありがとうございます!

いただいた情報を参考に

*100/100ではなく、+% 1にすると解決しました!

ありがとうございました!
累積比率パレートマン
記事: 33
登録日時: 2022年1月12日(水) 01:12

Re: jsに関する質問です

投稿記事by 累積比率パレートマン » 2023年9月24日(日) 17:34

もうひとつのスレッドですが、放置してしまって申し訳ございません!

結局、解決できず、「無理!」という結論で自己完結しておりました!

ご返信いただいたのにすみません!

“MZ:質問” へ戻る