如何在 Mathematica 中将有理数转化为实数

发布于 2024-10-31 04:36:16 字数 289 浏览 1 评论 0原文

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

对于这个具体问题,我可以做类似 BaseForm[1/3*1.,3] 的事情,但是这真的不太好。

感谢您的帮助。

I have some issue here which I don't know how to solve in a good way. For example, I want to use BaseForm[1/3, 3]. However, this does not do what I intended unless I input BaseForm[1/3.,3]. Given the data in Rational form, how to turn it to Real? I tried with Apply, it does not work. (Strange enough, uh? To me, Apply can always be used to change header.)

To this specific problem, I could have done something like BaseForm[1/3*1.,3], but it really isn't very nice.

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

静若繁花 2024-11-07 04:36:16

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];

然后正常使用。

BaseForm takes a rational in base 10 to a rational in what ever base you want... so it does what you expect.

In[1]:= BaseForm[1/3,3]
Out[1]//BaseForm= Subscript[1, 3]/Subscript[10, 3]

And as you pointed out, giving it a Real number can be done like:

In[2]:= BaseForm[1/3.,3]
Out[2]//BaseForm= Subscript[0.1, 3]

The safest way to change things would be to define your own baseForm which is the same as BaseForm except for when it's given rational numbers:

baseForm[r_Rational,b_]:=BaseForm[N[r],b]

Then

In[3]:= baseForm[1/3,3]
Out[3]//BaseForm= Subscript[0.1, 3]

The less safe way (because you don't know what else it might break) is to redefine BaseForm

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

and then use as normal.

我乃一代侩神 2024-11-07 04:36:16

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

BaseForm[N[1/3], 3]
(*  Out=  0.13  *)

I may be missing the subtlety of your request, but if you always want a real-number output, why not merely use N?

BaseForm[N[1/3], 3]
(*  Out=  0.13  *)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文