我正在执行基本的计算器示例。
在划分两个数字的同时,我得到了科学浮动符号的结果。
当我划分3/2
时,我得到结果1.4E24
,但我需要正常值1.5
。
我正在使用NDK。
功能用途如下
float res2 = nativeLib.divide(v1, v2);
s= ""+res2;
System.out.println(res2);
result.setText(s); >
Function调用在NativeLib类文件中 public native Float divide(int x,int y);
功能实现是C lang
JNIEXPORT jfloat JNICALL Java_com_example_Ndkdemo_NativeLib_divide
(JNIEnv * env, jobject obj, jint value1, jint value2)
{ float d= (value1 / value2) ;
return (d);}
答案 0 :(得分:0)
您可能希望将value1 / value2强制转换为浮点数,而不只是将其赋值给浮点数。
答案 1 :(得分:0)
你的C代码被轻微破坏了。你正在进行两次整理并进行float = int / int
。这里的问题是,转换规则是这样的,C将首先将一个int除以另一个,然后转换为float。所以传递3,2将导致3/2 == 1,而不是1.5。
你想要更像
的东西float d = (float) value1 / value2;
重新回到1.4e24。这是损坏的返回值。
这是因为您将除法函数声明为Float
而不是float
。这些不是一回事。 Float
是一个盒装值,绝对与C侧的jfloat
类型不同。
如果您将原生声明更改为
public native float divide(int x, int y);
它应该都开始正常工作。 (注意'浮动'上没有大写字母!)