2015-05-22 42 views
6

Tôi đang sử dụng Python 2.7 và MySQLdb. Tôi nhận được lỗi này trên mã này:LoạiError: loại toán hạng không được hỗ trợ (s) cho +: 'thập phân' và 'phao'

Value = 5 
x.execute("SELECT number from Testing where id ='%s';" % Value) 
data = x.fetchall() 
print (data) 
data = data[0][0] 
data = data + 0.5 
x.execute(""" UPDATE Testing SET number = %s WHERE id = %s """, (data, Value)) 
conn.commit() 

Lỗi xảy ra trên dòng: data = data + 0.5.

TypeError: unsupported operand type(s) for +: 'decimal' and 'float'.

Con số này là một DECIMAL(8,1). Tôi đã thấy các câu hỏi khác với lỗi này nhưng không phải để thêm. Plus, tôi nghĩ rằng một số người sẽ có cùng một vấn đề nếu họ là người mới đối với Python và không thể hiểu được mã Python nâng cao hơn cho các câu hỏi vấn đề tương tự. Liệu bạn có thể giúp mình không? Cảm ơn trước.

+0

Loại '(dữ liệu [0] [0])' 'là gì? –

Trả lời

6

Có không xuất hiện để được hỗ trợ hoạt động đó, bạn sẽ phải xây dựng một đối tượng Decimal trước và thêm điều này:

In [132]: 

import decimal 
​ 
d = decimal.Decimal(23.0) 
d = d + decimal.Decimal(0.5) 
d 
Out[132]: 
Decimal('23.5') 
+0

Đặt các chữ số thập phân trong dấu ngoặc kép tức là decimal.Decimal ('0.5') thường có thể cho kết quả rõ ràng hơn. –

+0

dịch vụ chăm sóc downvoter để giải thích – EdChum

+0

Rất tiếc, nhấp chuột sai mà tôi đã không thông báo cho đến bây giờ. Không thể thay đổi nó bây giờ không may. Lấy làm tiếc! – jontro

1

Đây thực sự là một ngoại lệ bổ sung:

from decimal import Decimal 
Decimal('0.1') + 0.2 

TypeError         Traceback (most recent call last) 
<ipython-input-3-9bb7f0cfb622> in <module>() 
     1 from decimal import Decimal 
----> 2 Decimal('0.1') + 0.2 

TypeError: unsupported operand type(s) for +: 'decimal.Decimal' and 'float' 

Bạn có thể muốn làm điều này thay vì:

data = data + Decimal('0.5') 
Các vấn đề liên quan