可能重复:
How to convert floats to human-readable fractions?计算最近的浮点值
我有一个浮点值说0.595781
,我想用商使用,以获得尽可能接近地只有整数分子和分母的值都在0 to 1023 (10-bits)
的范围内。
这样做的直观方式(至少开始)将使用595/1000
,它提供0.555
一个相当接近的匹配(错误是0.040781
)。
但有一个更好的匹配597/1002
这是0.595808
(错误0.0000273
)。也可能有更好的比赛。我以不可思议的方式玩弄接近它们原始值的分子和分母值,来到第二个商数。
然后我想知道是否有一种方法给出了所有的标准直接得到分子和分母的整数值。
如果您想知道需要两个整数值来设置的波特率发生器。
任何想法,将不胜感激。 问候
为什么595/1000会变得很直观,当简单的四舍五入导致你更接近596/1000? – TJD
你想要的是分母d = 1024的[最合理逼近](https://en.wikipedia.org/wiki/Continued_fraction#Best_rational_approximations)。这在Borgleader链接的重复中得到了解答。 –
为了获得最佳精度,您可以使用可用的最高demoninator(对于从0到1023的值,这是512),这是2的幂。然后第一个分子是圆的(512 *值)。这保证了精度始终小于1/512,因为浮点值是二进制的。要更正分母以获得更好的精度,可以计算一个校正项=(分子/值) - 分母,并将其添加到分母中。 –