给你骨质唱疏松 2021-06-18 17:28 采纳率: 50%
浏览 17

python调用go的动态链接库整形叠加超过10000后值不精确?

package main

import "C"
import "fmt"

func main() {
   res := Count()
   fmt.Println(res)
}
//export Count
func Count() int {
   i:=0
   num:=0
   for i<100000{
      num+=i
      i++
   }
   return num
}

上面是go语言的整形叠加函数, 下面是Python调用该go文件的动态链接库

 

# coding:utf-8
from ctypes import cdll

lib = cdll.LoadLibrary(r'E:\go\src\GoProject\test_num.so')


res = lib.Count()
print(res)

上面是超过了10000 的整形叠加, 下面是两个程序的结果, 不相等 : 

 

 

如果叠加范围在10000以内, 数值还是准确的 : 

 

 

各位大佬有知道什么原理吗?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 写回答

1条回答 默认 最新

  • 梦幻精灵_cq 2023-02-05 12:05
    关注


      会不会是因为两种语言对“长整型”的支持、解读机制哩?

      go我不晓得,Python是有对“长整型”的描述。我才初通python,没接触到“大数”,所以对“长整型”还没去学习。🤔

    评论 编辑记录

报告相同问题?