#include "hspmath.as" value = 1000 mes floor(log10(value)) + 1
これを実行したところ、4.000000と出るべきところが3.000000と出ました。
hspmath.as を確認したところ、log10は
#define ctype log10(%1) (logf(%1)/logf(10)) ; log_10(x)
という実装(底の変換)になっていましたが、ここで丸め誤差が発生したと考えられます。
mes log10(1000) // -> 3.000000 mes floor(log10(1000)) // -> 2.000000
log10の定義に使われたlogfの実装がどのようなものかは確認できませんでしたが(おそらく直接log(x)を呼び出している?)、
このlog10を底の変換を介さずにmath.hのlog10(float x)を直接呼ぶ標準関数にすることは可能でしょうか?