如何在Mathematica中将Rational变为Real

时间:2011-04-09 05:04:21

标签: wolfram-mathematica

我在这里有一些问题,我不知道如何以一种好的方式解决。例如,我想使用BaseForm[1/3, 3]。但是,除非我输入BaseForm[1/3.,3],否则这不符合我的意图。给定Rational表单中的数据,如何将其转换为Real?我尝试使用Apply,但它不起作用。 (奇怪的是,呃?对我来说,Apply总是可以用来改变标题。)

对于这个特定问题,我本可以做一些像BaseForm[1/3*1.,3]这样的事情,但它确实不是很好。

感谢您的帮助。

2 个答案:

答案 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  *)