Wolfram mathematica 在Mathematica中如何将理性转化为现实

Wolfram mathematica 在Mathematica中如何将理性转化为现实,wolfram-mathematica,Wolfram Mathematica,我这里有一些问题,我不知道如何解决好。例如,我想使用BaseForm[1/3,3]。但是,除非我输入BaseForm[1/3,3],否则这不会达到我的预期效果。如果数据以理性的形式存在,如何将其转化为现实?我尝试了应用,但它不起作用。(很奇怪,嗯?对我来说,Apply总是可以用来更改标题。) 对于这个特定的问题,我本可以做一些类似于BaseForm[1/3*1,3]的事情,但它确实不是很好 感谢您的帮助。BaseForm将10进制的rational转换为任意进制的rational。。。所以它会满

我这里有一些问题,我不知道如何解决好。例如,我想使用
BaseForm[1/3,3]
。但是,除非我输入
BaseForm[1/3,3]
,否则这不会达到我的预期效果。如果数据以理性的形式存在,如何将其转化为现实?我尝试了
应用
,但它不起作用。(很奇怪,嗯?对我来说,Apply总是可以用来更改标题。)

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


感谢您的帮助。

BaseForm
将10进制的rational转换为任意进制的rational。。。所以它会满足你的期望

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]
然后


不太安全的方法(因为您不知道它还会破坏什么)是重新定义
BaseForm

Unprotect[BaseForm];
BaseForm[r_Rational, b_] := BaseForm[N[r], b]
Protect[BaseForm];

然后像平常一样使用。

我可能忽略了您请求的微妙之处,但是如果您总是想要一个实数输出,为什么不只使用
N

BaseForm[N[1/3], 3]

(*Out=0.13*)使用
Apply
works;它会更改表达式的开头
Real@@Rational[1,3]==Real[1,3]
——但是
Real[1,3]
是什么意思呢?您可以使用
N@Rational[1,3]
…@Simon:哦,我明白了。只是忘了看荒谬的
Real[1,3]
BaseForm[N[1/3], 3]
(* Out= 0.13 *)