我在这里有一些问题,我不知道如何以一种好的方式解决。例如,我想使用BaseForm[1/3, 3]
。但是,除非我输入BaseForm[1/3.,3]
,否则这不符合我的意图。给定Rational表单中的数据,如何将其转换为Real?我尝试使用Apply
,但它不起作用。 (奇怪的是,呃?对我来说,Apply总是可以用来改变标题。)
对于这个特定问题,我本可以做一些像BaseForm[1/3*1.,3]
这样的事情,但它确实不是很好。
感谢您的帮助。
答案 0 :(得分:3)
BaseForm
在你想要的任何基础上将理性基础10理解为理性......所以它符合你的期望。
In[1]:= BaseForm[1/3,3]
Out[1]//BaseForm= Subscript[1, 3]/Subscript[10, 3]
正如你所指出的那样,给它一个实数可以像:
In[2]:= BaseForm[1/3.,3]
Out[2]//BaseForm= Subscript[0.1, 3]
最安全的改变方法是定义自己的baseForm
,它与BaseForm
相同,除非它给出了有理数:
baseForm[r_Rational,b_]:=BaseForm[N[r],b]
然后
In[3]:= baseForm[1/3,3]
Out[3]//BaseForm= Subscript[0.1, 3]
不太安全的方式(因为你不知道它可能会破坏什么)是重新定义BaseForm
Unprotect[BaseForm];
BaseForm[r_Rational, b_] := BaseForm[N[r], b]
Protect[BaseForm];
然后正常使用。
答案 1 :(得分:2)
我可能会错过您的请求的微妙之处,但如果您总是想要实数输出,为什么不仅仅使用N
?
BaseForm[N[1/3], 3]
(* Out= 0.13 *)