我已经编写了一个函数F,它按照一些特定的规则对输入进行四舍五入。例如,如果我的输入是F(0.1355)
,它将输出为1.4b-1
。问题是,当我做F(0.1355)^2
时,它给我1.96382999420166b-2
,它应该给我0.14^2,即1.96b-2
。这是为什么发生?并且,我该如何解决它?maxima中函数的输出
这是我的函数的代码:
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为全局变量。我知道这会解决我的问题。 此致敬礼,
Lievet。
是的,它没有一个简单的解决方案。我不想把输出有理数,所以我没有考虑这个方法。无论如何,正如您指出的那样,我将使用fpprintprec,但仅限于显示。谢谢! – Topologicalife