从分数到十进制和后退?

是否有可能在某种变量中存储3/6的分数? 当我尝试这个时它只存储/之前的数字。 我知道我可以使用2个变量并将它们分开,但输入来自单个文本字段。 这是可能吗?

我想这样做,因为我需要计算小数几率的分数。

一个额外的问题;) – 是否有一种简单的方法来计算分数的十进制值? 谢谢..

最好的办法是实现一个分数类(或有理数字类)。 通常它需要分子和分母并且能够提供双精度,并且与其他分数对象进行基本数学运算。 它还应该能够解析和格式化分数。

Rosetta Code上的Rational算法看起来像是一件好事。

简而言之,没有真正的方法从小数中提取原始分数。

示例:5/10

你会得到0.5

现在,0.5也可以转换为1 / 2,2 / 4,3 / 6等。

最好的办法是分别存储每个整数,然后再进行计算。

我担心在这方面你没有任何简单的答案。 要创建分数,您必须将文本字段拆分为“/”,将两半转换为double ,然后将它们分开。 至于将它转换回一个分数,你将不得不打开一本数学教科书并弄清楚。 (更糟糕的是,双精度实际上并不精确 – 你可能认为它有0.1,但它真的有0.09999999999999998726或类似的东西,所以你必须选择一个精度并去寻找它,或写一些分数基于一对整数的类。)

如上所述,该方法是存储分子和分母,这与您在纸上书写的方式非常相似。

为’C’使用

GNU多精度算术库

在文档中寻找“理性”。

有没有一种简单的方法来计算分数的十进制值?

如果将十进制值限制为特定数量的小数点,则可以创建查找表。

 0.3333,1 / 3
 0.6666,2 / 3
 0.0625,1 / 16
 0.1250,1 / 8
 0.2500,1 / 4
 0.5000,1 / 2
 0.7500,3 / 4
等等...

因此,如果用户输入0.5,则用0填充它,直到得到4位小数。 然后,您将使用查找表返回“1/2”。 查找表可能应该是各种字典。

估算任何一项都不会太困难。 例如,如果用户输入0.0624,则可以轻松选择最接近该小数的表中的值。 在这种情况下,它将返回“1/16”。

不要让有限的十进制/分数对的输入/输入吓到你(根据你选择的精度,它真的不是那么大)。

如果所有其他方法都失败了,谷歌搜索可能会显示一个库,可以为您执行此类操作。