是否可以在某种变量中存储3/6的分数? 当我尝试这个时它只存储/之前的数字。我知道我可以使用2个变量并将它们分开,但输入来自单个文本字段。这有可能吗?
我想这样做是因为我需要将分数计算为小数赔率。
奖金问题;) - 有一种简单的方法来计算分数的十进制值吗?感谢..
答案 0 :(得分:5)
简而言之,没有真正的方法可以从小数中提取原始分数。
示例:采取5/10
你会得到0.5
现在,0.5也可以转换为1 / 2,2 / 4,3 / 6等。
最好的办法是分别存储每个整数,然后再进行计算。
答案 1 :(得分:3)
我担心你没有任何简单的答案。要创建分数,您必须将文本字段拆分为“/”,将两半转换为double
,然后将它们分开。至于将它转换回一个分数,你将不得不打开一本数学教科书并弄清楚。 (更糟糕的是,双精度实际上并不精确 - 你可能认为它有0.1,但它确实有0.09999999999999998726或类似的东西,所以你必须选择一个精度并去寻找它,或写一些分数基于一对整数的类。)
答案 2 :(得分:3)
最好的办法是实现一个分数类(或有理数字类)。通常它需要分子和分母并且能够提供双精度,并且与其他分数对象进行基本数学运算。它还应该能够解析和格式化分数。
答案 3 :(得分:3)
答案 4 :(得分:1)
有一种简单的方法可以计算分数的十进制值吗?
如果将小数值限制为一定数量的小数点,则可以创建查找表。
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 etc...
因此,如果用户输入0.5,则用0填充它,直到得到4位小数。然后,您将使用查找表返回“1/2”。查找表可能应该是各种字典。
估算任何一项都不会太困难。例如,如果用户输入0.0624,则可以轻松选择最接近该小数的表中的值。在这种情况下,它将返回“1/16”。
不要让有限的十进制/分数对的输入/输入吓到你(根据你选择的精度,它真的不是那么大)。
如果所有其他方法都失败了,谷歌搜索可能会显示一个库,可以为您执行此类操作。