Rumah  >  Artikel  >  Java  >  Mengapa Menukar Terapung kepada Berganda Kehilangan Ketepatan, dan Bagaimana Saya Boleh Mengekalkan Ketepatan?

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

Linda Hamilton
Linda Hamiltonasal
2024-11-02 21:20:02900semak imbas

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>

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>

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!

Kenyataan:
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