如何在Android应用程序中禁用Scientific Float表示法

时间:2012-02-02 13:42:24

标签: android android-emulator android-widget android-ndk

我正在执行基本的计算器示例。

在划分两个数字的同时,我得到了科学浮动符号的结果。

当我划分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);} 

2 个答案:

答案 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);

它应该都开始正常工作。 (注意'浮动'上没有大写字母!)