可能重複:
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,因爲浮點值是二進制的。要更正分母以獲得更好的精度,可以計算一個校正項=(分子/值) - 分母,並將其添加到分母中。 –