ulp()
گاهی عددها دقیق نیستند. اینجا «واحد کمترین دقت» کمک می کند. متد ulp() همین مقدار ریز را می دهد. با آن می فهمی گام بعدی عدد چیست.
واحد کمترین دقت (ULP) چیست؟
ULP یعنی کوچک ترین جهش قابل نمایش کنار یک عدد. یعنی یک قدم بالا یا پایین که ممیز شناور می تواند برود. مثل تغییرات ریز امتیاز در یک بازی، نه هر عددی ممکن است.
public class Main {
public static void main(String[] args) {
System.out.println(Math.ulp(1.0));
System.out.println(Math.ulp(1.0f));
System.out.println(Math.ulp(5000000.0));
System.out.println(Math.ulp(5000000.0f));
System.out.println(Math.ulp(50000000.0));
System.out.println(Math.ulp(50000000.0f));
}
}
گام های عملی
- یک عدد اعشاری انتخاب کن.
Math.ulp(number)را صدا بزن.- ULP را با نیاز دقتت بسنج.
نکته: نوع double دقیق تر از float است؛ پس ULP کوچک تر است.
نکته: هرچه مقدار بزرگ تر شود، دقت کمتر می شود؛ ULP بزرگ تر می شود.
نکته: علامت عدد روی ULP اثری ندارد.
برای تبدیل دقیق انواع عددی، صفحه toIntExact() را ببین. برای محاسبه مطمئن تفریق و جلوگیری از سرریز، subtractExact() را بررسی کن.
جمع بندی سریع
- ULP کوچک ترین جهش کنار عدد است.
doubleULP کوچک تری دارد.- اعداد بزرگ ULP بزرگ تری دارند.
- علامت، ULP را تغییر نمی دهد.