Seperti yang ditunjukkan dalam rajah, apabila Python2.7 menggunakan eval untuk mengira ungkapan titik terapung,
eval('0.3-0.1==0.2') # 输出为False
eval('%d - %d == %d'%(0.3, 0.1, 0.2)) # 输出为True
eval('%s - %s == %s'%(0.3, 0.1, 0.2)) # 输出为False
eval('%s - %s == %s'%('0.3', '0.1', '0.2')) # 输出为False
Ini sangat mengelirukan saya tidak dapat mencari jawapan dalam talian.
Kemas kini:
Saya ada soalan lain,
a=0.3-0.1, keluaran print(a) 0.1999999999999998; b=0.2,
tetapi keluaran print('%s==%s'%(a,b)) 0.2 ==0.2,
Mengapakah perubahan daripada 0.1999999999999998 kepada 0.2 apabila memformat rentetan?
Secara umumnya ia tidak boleh digunakan terus dalam komputer
==
Bandingkan sama ada dua nombor titik terapung adalah sama.Kerana nilai titik terapung mempunyai ralat dalam komputer.
Python mempunyai
decimal
和fraction
2 modul untuk pengiraan titik terapung berketepatan tinggi.Contoh
Ini tidak ada kaitan dengan eval, ini terutamanya soal ketepatan Ini akan ditemui dalam semua bahasa pengaturcaraan Jika anda mencuba 0.3-0.1 == 0.2, ia akan mengembalikan masalah Baidu JavaScript 0.2-0.1 kemudian lihat "Prinsip Komposisi Komputer" 》Perwakilan data awal.
https://stackoverflow.com/que... Ini adalah jawapan yang mendapat undian tinggi.