Untuk mengalihkan tempat perpuluhan dalam dua kali, anda mungkin secara naluri mendarab dengan 0.1. Walau bagaimanapun, ini boleh memperkenalkan ralat pembundaran, kerana 0.1 bukanlah perwakilan tepat dalam perduaan.
Daripada menggunakan 0.1, lebih baik menggunakan 100, yang boleh diwakili dengan tepat dalam binari. Untuk mengalihkan tempat perpuluhan ke atas, hanya bahagikan dengan 100:
double x = 1234; x /= 100;
Walaupun dengan pendekatan ini, beberapa ralat pembundaran masih wujud disebabkan oleh had titik terapung perwakilan. Double.toString() melakukan beberapa pembundaran, tetapi mengelakkan pembundaran sama sekali selalunya memerlukan penggunaan BigDecimal.
Perhatikan bahawa x / 100 dan x * 0.01 bukan sama dari segi ralat pembundaran. Ralat pembundaran dalam ungkapan pertama bergantung pada nilai x, manakala 0.01 dalam ungkapan kedua mempunyai ralat pusingan tetap. Ini boleh membawa kepada keputusan yang berbeza dalam kes tertentu.
Memahami batasan perwakilan titik terapung dan menggunakan teknik yang sesuai boleh memastikan pengendalian tepat tempat perpuluhan dalam beregu, meminimumkan ralat pembundaran yang boleh timbul daripada operasi pendaraban yang tidak tepat.
Atas ialah kandungan terperinci Bagaimana Menggerakkan Tempat Perpuluhan dengan Tepat dalam Double Tanpa Ralat Pembundaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!