[英]C++ float into Python float wrong conversion
我正在使用SWIG將C ++代碼包裝到Python中。 但是浮點數的轉換很奇怪。 例如,如果我有以下函數(用C ++編寫)
float foo() {
float x=62.02;
return x;
}
並在Python中執行(用SWIG包裝后)
>>> import mymodule
>>> mymodule.foo()
62.02000045776367
>>>
它返回62.02000045776367
而不是62.02
。
有沒有辦法告訴SWIG如何進行正確的轉換?
這是正確的轉換,只是無法用float
精確地表示小數點62.02
,就像您無法用小數點表示小數點2/3
。
通過此短代碼,您可以看到更多內容,當您將62.02
存儲為float
和double
時,將看到C ++的62.02
: http : 62.02
除了無損float
-> double
轉換外,沒有任何轉換在進行。
62.02
不能完全表示為C float
。 當您進行float x=62.02
,變量將包含您提到的值。
我強烈建議閱讀每位計算機科學家應該了解的有關浮點運算的知識 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.