我一直沒能找到不承擔已經知道事情的任何信息網上。我想知道是否有人知道我可以研究哪些好的資源來幫助我圍繞這個函數做什麼?有人可以解釋Math.ulp(double)方法嗎?
從我所收集的,我敢肯定這是錯誤的,或者至少不完全正確的,是給定一個浮點,它決定本身和若干接下來的序列之間的距離?似乎有些數字是按位表示的,但我所閱讀的資料從未明確地說過。
我一直沒能找到不承擔已經知道事情的任何信息網上。我想知道是否有人知道我可以研究哪些好的資源來幫助我圍繞這個函數做什麼?有人可以解釋Math.ulp(double)方法嗎?
從我所收集的,我敢肯定這是錯誤的,或者至少不完全正確的,是給定一個浮點,它決定本身和若干接下來的序列之間的距離?似乎有些數字是按位表示的,但我所閱讀的資料從未明確地說過。
http://matlabgeeks.com/tips-tutorials/floating-point-comparisons-in-matlab/值
所示它相當好:
float2bin(A)
// ANS = 0011111110111001100110011001100110011001100110011001100110
float2bin(B)
// ANS = 0011111110111001100110011001100110011001100110011001100110
可以看到在這個例子中二進制級別的精度差異。 A和B相差6 ulps(單位在最後)
我相信,它顯示您指定的號碼,並可以被編碼的下一個最大的二進制浮點之間的距離。
由於二進制浮點數覆蓋的範圍及其精度,並不是所有兩個給定實數之間的所有數字都被覆蓋,所以看起來這是給出了您希望編碼的數字與它將被存儲的實際數量。
至少精度(ULP)的單位爲浮點數之間的間距,即,至少顯著數字表示,如果它是1
請參閱[IEEE浮點](http://en.wikipedia.org/wiki/IEEE_floating_point)以瞭解大多數計算機如何存儲浮點數; Java的'float'和'double'對應於binary32和binary64 IEEE浮點類型。 – Jesper