- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个系统,可以将任何基数 (2-36) 转换为另一个整数基数,并且它可以将任何实数从基数 10 转换为任何其他基数 (2-36)。
我的问题是将有理数/无理数从 10 以外的任何基数转换为另一个基数。
我使用以下算法进行小数点右侧的转换:
1)取输入中小数点的右边(0.xxxxxx--->),乘以你要转换的基数。
2)取大于一的数(点的左边),加到转换后的数的右边。
3)取乘积的右边,在下一次重复中使用它作为乘数(乘以基数)
4)重复直到满意或留下一个整数(右侧为0)。
这对于将任何浮点数从十进制转换为另一个基数非常有效,但显然您不能从不是十进制的基数转换。
所以我尝试的是将小数点右边的初始值转换为基数 10,执行数学部分,然后将其转换回原始基数,以便在我将其添加到输出值时(它之前已转换为新基数)正在添加)。
不幸的是,这会返回小数点右侧的错误结果。因此,如果从不是 10 的基数转换而来,我的答案在左侧总是正确的,但在右侧是不正确的。
有没有人对如何使这项工作有任何想法?或者也许它不会?
编辑
或者,任何人都可以链接我/告诉我如何将有理的十六进制值转换为十进制?仅此一项就足以让我解决这个问题。
解决方案
我为将来阅读此问题的任何其他人找到了解决此问题的相当简单的方法。
您所要做的就是取小数点右侧的数字(无论基数如何)并将其转换为十进制数(您可以查看如何转换整数 here )。然后取该数字并将其除以其中的最大位值。例如:
A.C
C == 12 (dec)
12 / 16 = .75 (this is the fractional value in decimal)
最佳答案
使用浮点意味着您不想执行准确的计算。
只有以 2、4、8、16 为底的数字才能在 Java 中准确表示 floating point值(不考虑整数)。这是由于浮点表示的局限性。
只有以 2, 4, 5, 8, 10, 16, 20, 25, 32,... 为基数的数字才能以十进制准确打印。这是由于我们的 decimal number system 的限制.
我希望您因此应该调整一些关于结果舍入的规则,并在整个算法中实现这些规则。确保你舍入而不是截断,否则即使在 double
的精度的情况下,通过浮点也会给你错误的结果。 type 足以满足您的目的,或者可以准确表示数字。
如果您想以更高的精度执行计算,请查看 BigInteger
类并专门以整数重新设计您的算法。或者,使用 library用于处理分数;这很有用,因为算法的输入始终可以准确地表示为一个分数。然而,最终它总是归结为定义结果舍入规则并正确实现它们。
编辑 :
0.1111
在三元中,那么您知道输出位于 0.49382716
之间和 0.50617284
在此阶段,您甚至无法发出小数点后的第一个十进制数字。这对于避免看到类似 0.4999999992
的输出是必要的。最“理性”的投入。 0.1111
三进制将转换为十进制的 0.5。 (如果您仅限于十六进制到十进制的转换,则可以忽略这一点。)关于java - 基本转换 : issue with fractions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10972276/
[Error] no matching function for call to 'fraction::add(fraction&, fraction&)' line 105 which is f3.
我想对有理数做一些任意精度的数学运算,例如: >>> from fractions import Fraction >>> Fraction(318483434, 198041039430943094
我正在构建仪表板并想使用 CSS-grid。我设置了一个 4 列网格。在第 3 行中,我需要 2 个元素来跨越 1.5 列。 如何使 D 和 E 的宽度相等,以便它们各自占据可用空间的一半,使它们合在
我想开始学习 Python 中的分数模块。我使用 Atom 编辑器并打包“脚本”以从编辑器运行模块。所以,我在尝试制作简单的分数对象时遇到了这个错误: AttributeError: module '
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
在 f 字符串中使用 fraction.Fraction 时,我希望能够将其格式化为 float。但是我得到一个 TypeError: from fractions import Fraction f
在 Python 中,fractions.Fraction 和 decimal.Decimal 标准库类的存在有助于保持有理数算术的精确性。对于不熟悉的人,它有帮助的地方的例子: >>> 1 / 10
我正在尝试创建一个简单的程序,它接受一个分子和分母,然后将其相除并显示简化形式。当我编译程序时出现以下错误,我无法理解错误是什么: workshop9.c: In function ‘simplify
我知道 floating point math 的性质但我仍然发现以下内容令人惊讶: from fractions import Fraction print(Fraction(0.2))
from fractions import Fraction class F1(Fraction): def __init__(self, *args, **kwargs):
我正在使用 Python 和 fractions.Fraction() 我有一个分数列表,我想将它们打印成如下所示: a = Fraction(0.25) b = Fraction(1,3) ...
给定:T(1) = 1 您将如何计算 T(n) = T(n/4) + 1 的封闭形式? 我的回答是: T(n) = T(n/4) + 1 T(n) = T(n/8) + 1 + 1 T(n) = T(
在 Meteor 版本 1.2.0.1 上安装我的 Meteor 应用程序(在旧版本的 Meteor 上开发)后,我收到以下错误: ReferenceError: Random is not defi
我编写了一个系统,可以将任何基数 (2-36) 转换为另一个整数基数,并且它可以将任何实数从基数 10 转换为任何其他基数 (2-36)。 我的问题是将有理数/无理数从 10 以外的任何基数转换为另一
我有一个数据集,其数据格式如下: 10 ¾ AB 02/15/19 我正在尝试将 3/4 转换为 .75,以便数据如下所示: 10.75 AB 02/15/19 我正在考虑尝试迭代字符串中的每个字符,
我使用 Fraction用于表示分数,但问题是它在向构造函数提供输入时立即减少到最低形式。有没有办法防止这种行为? e.g. Fraction f1 = new Fraction (1, 3) ==
我正在处理分数加法问题:http://www.codechef.com/problems/ADDFRAC/在 codechef。如果有人可以帮助我理解问题的算法,那将是很大的帮助。 P.S :我试过这
算法中“分数”一词的定义是什么?我在“分数算法”、“分数节点路由问题”等短语中遇到过这个词。我也遇到过短语“[...]设计分数算法并将其转换为离散算法[...]”。 “分数”这个词可以表示“连续”吗?
time :: Int -> (Int,Int,Int) time x = ((x/3600),(x`mod`3600)/60,((x`mod`3600)`mod`60)) 定义时间所需的 Fra
这个问题已经有答案了: Division of integers in Java [duplicate] (7 个回答) 已关闭 8 年前。 当我有一个分数时,例如 (5 / 6)那么 Java 会将
我是一名优秀的程序员,十分优秀!