Bah menggunakan float bukan double. sekarang kode saya mati oleh .0000000001 yang sakit
Evorlor
2
kebetulan, ini juga bekerja dengan notasi eksponen. misalnya: float('7.5606e-08')menghasilkan float python yang diharapkan.
drevicko
2
Dengan python saya (versi 2.7.10), ketika saya menetapkan >>> x = "2342.34" dan mengkonversi ke float >>> float(x) saya 2342.34malah 2342.3400000000001melaporkannya oleh @Mongoose
Jawaban:
Ini dia. Gunakan float (yang berperilaku seperti dan memiliki ketepatan yang sama dengan C, C ++, atau Java double).
sumber
float('7.5606e-08')
menghasilkan float python yang diharapkan.>>> x = "2342.34"
dan mengkonversi ke float>>> float(x)
saya2342.34
malah2342.3400000000001
melaporkannya oleh @Mongoose>>> 0.1 + 0.2
untuk double.>>> 0.1 + 0.6
untuk mengapung.Operator desimal mungkin lebih sesuai dengan apa yang Anda cari:
sumber
Ketahuilah bahwa jika nomor string Anda berisi lebih dari 15 digit signifikan
float(s)
akan membulatkannya. Dalam hal itu, lebih baik digunakanDecimal
Berikut ini penjelasan dan beberapa contoh kode: https://docs.python.org/3/library/sys.html#sys.float_info
sumber