得到了' nan'在python3中使用ctypes时,需要浮点数

时间:2017-12-17 09:25:39

标签: python c ctypes

这是我的bmi.c

#include<stdio.h>

float height;
float weight;
int getbmi(float h , float w);

int main(){
    return 0;
}

int getbmi(float h , float w)
{
     //float h , w;
    float res;

    res = w/h;
    res = res/h;
    return res;
 }

我正在编译:

gcc -shared -Wl,-soname,adder -o bmi.so -fPIC bmi.c

然后这是我的getbmi.py

from ctypes import *

bmi = CDLL('./bmi.so')

h = c_float(1.6002)
w = c_float(75)

getbmi = bmi.getbmi
getbmi.restype = c_float
print(getbmi(h, w))

当我运行getbmi.py时,我只得到一个输出:nan

我很困惑

1 个答案:

答案 0 :(得分:2)

您使用int返回getbmi(),以便res投放到int 1.6002 / 75 / 75 = 0.00028448,以便投射产生0。但是你告诉python返回类型是float所以python将int解释为float

float getbmi(float h, float w);

float getbmi(float h, float w) {
  return w / h / h;
}