[英]Floating point resolution at a given number
我想知道給定值附近的浮點數的epsilon。
std::numeric_limits<floating_point_type>::epsilon()
僅針對數字1.0提供此功能,而我希望函數可以對任何數字使用。
是否有標准庫解決方案? 如果沒有-我應該如何實現該功能?
好吧,最簡單的解決方案是在值的正上方找到epsilon(即,從該值到下一個可表示的值的距離)
std::nextafter(x, std::numeric_limits<floating_point_type>::infinity()) - x
同樣,要找到低於該值的epsilon,您可以
x - std::nextafter(x, -std::numeric_limits<floating_point_type>::infinity())
請注意,如果x是2的冪,則這兩個將不相同。
現在,有一個輕微的警告有:以上所計算的小量FLT_MAX
將是無窮大(可以說這是一種正確的答案,但它並不完全符合IEEE-754的四舍五入規則)及以上的無限小量將為NaN(其中,好吧,我不知道我對此有何看法)。 在所有其他情況下,結果將是准確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.