私はいくつかの特定の規則に従って入力を丸める関数Fをプログラムしました。たとえば、入力がF(0.1355)
の場合、出力は1.4b-1
となります。問題は、私がF(0.1355)^2
をするときに、それは私に0.14^2、すなわち1.96b-2
を与えなければならないとき、私に1.96382999420166b-2
を与えます。なぜこうなった?どうすれば修正できますか?最大値の関数の出力
これは私の関数のコードです:
F(x):=(block ([log10,aaa,fpprec],log10(x):=entier(log(x)/log(10)),
vnorm(x):= if x/(10^(log10(x)))<2 then 1/(10^(log10(x)-1)) else 1/10^(log10(x)),
aaa(x):= x*vnorm(x),
fpprec:if aaa(x)<20 then 2 else 1,bfloat((round(aaa(x)))*1/vnorm(x)))); `
さらに詳しい情報:私はががグローバル変数としてFPPREC宣言することはできません。私はそれが私の問題を解決することを知っています。 よろしくお願いいたします。
リエケット。
ええ、簡単な解決策はありません。私は出力有理数を持つことを望んでいないので、私はそのように考えなかった。とにかく、あなたが指摘したように、私はfpprintprecを使いますが、表示を制限します。ありがとうございました! – Topologicalife