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];
а затем использовать как обычно.