Rumah > Java > javaTutorial > teks badan

Mengapa Menukar Terapung kepada Berganda Kehilangan Ketepatan, dan Bagaimana Saya Boleh Mengekalkan Ketepatan?

Linda Hamilton
Lepaskan: 2024-11-02 21:20:02
asal
966 orang telah melayarinya

Why Does Converting a Float to Double Lose Precision, and How Can I Maintain Accuracy?

Mengekalkan Ketepatan semasa Menukar Terapung kepada Berganda

Apabila menukarkan apungan primitif kepada berganda primitif, anda mungkin menghadapi percanggahan dalam ketepatan disebabkan oleh sifat semula jadi aritmetik titik terapung. Hanya menghantar apungan kepada dua kali ganda boleh mengakibatkan ralat pembundaran yang tidak diingini, seperti yang ditunjukkan dalam kod yang disediakan:

<code class="java">float temp = 14009.35F;
System.out.println(Float.toString(temp)); // Prints 14009.35
System.out.println(Double.toString((double)temp)); // Prints 14009.349609375</code>
Salin selepas log masuk

Walau bagaimanapun, menukar apungan kepada rentetan dan kemudian menghuraikannya semula sebagai dua kali menghasilkan ketepatan yang diingini:

<code class="java">System.out.println(Double.toString(Double.parseDouble(Float.toString(temp))));
// Prints 14009.35</code>
Salin selepas log masuk

Adalah penting untuk ambil perhatian bahawa ketepatan yang kelihatan lebih dalam tuangan langsung daripada apungan kepada dua kali ganda bukanlah keuntungan sebenar dalam ketepatan. Perwakilan berganda dengan tepat mencerminkan ketepatan yang wujud bagi nilai apungan. Menukar kepada rentetan dan belakang memudahkan perwakilan, menghasilkan nilai berganda lebih dekat dengan perwakilan rentetan daripada apungan asal.

Sebelum bergantung pada penyelesaian ini, pertimbangkan kesesuaian menggunakan jenis data apungan dan berganda. Jika nilai perpuluhan yang tepat adalah penting, seperti dalam aplikasi kewangan atau saintifik, BigDecimal disyorkan sebagai jenis yang lebih sesuai, kerana ia memberikan ketepatan dan kawalan yang lebih besar ke atas pengiraan perpuluhan.

Atas ialah kandungan terperinci Mengapa Menukar Terapung kepada Berganda Kehilangan Ketepatan, dan Bagaimana Saya Boleh Mengekalkan Ketepatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan