簡體   English   中英

C ++浮動到Python浮動錯誤轉換

[英]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存儲為floatdouble時,將看到C ++的62.02http : 62.02

除了無損float -> double轉換外,沒有任何轉換在進行。

62.02不能完全表示為C float 當您進行float x=62.02 ,變量將包含您提到的值。

我強烈建議閱讀每位計算機科學家應該了解的有關浮點運算的知識

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM