ฉันจะแปลงสตริงเป็น double ใน Python ได้อย่างไร


คำตอบ:


317
>>> x = "2342.34"
>>> float(x)
2342.3400000000001

ไปแล้ว ใช้ float (ซึ่งมีพฤติกรรมเหมือนและมีความแม่นยำเช่นเดียวกับ C, C ++ หรือ Java double)


38
หรือโดยเฉพาะอย่างยิ่ง Python Floats คือ C doubles
habnabit

1
บาใช้ลอยแทนการเพิ่มเป็นสองเท่า ตอนนี้รหัสของฉันถูกปิดโดย. 0000000001 ซึ่งเจ็บ
Evorlor

2
นอกจากนี้ยังสามารถใช้ได้กับสัญกรณ์เลขยกกำลัง เช่น: float('7.5606e-08')สร้าง python float ที่คาดหวัง
drevicko

2
กับงูหลามของฉัน (เวอร์ชั่น 2.7.10) เมื่อฉันกำหนด>>> x = "2342.34" และแปลงไปลอย>>> float(x) ฉันจะได้รับ2342.34แทน2342.3400000000001รายงานโดย @Mongoose
Bruce_Warrior

ใช้>>> 0.1 + 0.2สำหรับสองครั้ง >>> 0.1 + 0.6สำหรับลอย
user1510539

50

ตัวดำเนินการทศนิยมอาจสอดคล้องกับสิ่งที่คุณค้นหามากขึ้น:

>>> from decimal import Decimal
>>> x = "234243.434"
>>> print Decimal(x)
234243.434

2

โปรดระวังว่าหากหมายเลขสตริงของคุณมีตัวเลขที่มีความหมายมากกว่า 15 หลักfloat(s)จะถูกปัดเศษในกรณีเหล่านั้นจะเป็นการดีกว่าที่จะใช้Decimal

นี่คือคำอธิบายและตัวอย่างโค้ดบางส่วน: https://docs.python.org/3/library/sys.html#sys.float_info

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.