Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将百分比转换为十进制?…用于音量控制_Java_Android - Fatal编程技术网

Java 将百分比转换为十进制?…用于音量控制

Java 将百分比转换为十进制?…用于音量控制,java,android,Java,Android,这似乎不容易,但我看不出能找到一个明确的答案 假设我有一个字符串(音量),它有一个百分比…(80,50等),我想得到十进制格式的数字,然后用它来计算出手机的音量。我已经得到了maxVolume…所以它只是得到了正确的值,这让我很痛苦 Integer theVolume=Integer.parseInt(volume); double decimalNumber = theVolume/100; int calc=(int) (maxVolume*decimalNumber); mgr.setSt

这似乎不容易,但我看不出能找到一个明确的答案

假设我有一个字符串(音量),它有一个百分比…(80,50等),我想得到十进制格式的数字,然后用它来计算出手机的音量。我已经得到了maxVolume…所以它只是得到了正确的值,这让我很痛苦

Integer theVolume=Integer.parseInt(volume);
double decimalNumber = theVolume/100;
int calc=(int) (maxVolume*decimalNumber);
mgr.setStreamVolume(AudioManager.STREAM_MUSIC,calc, 0);

小数点只显示为0.0…无论我给它什么数字…?

试着这样做:

double decimalNumber = theVolume / 100.0;
末尾的
.0
将其转换为十进制数


edit:作为参考,它的行为是这样的,因为Java试图除以两个整数(当使用100时),所以它试图将结果输出为整数。结果是一个分数,因此Java默认情况下将其向下舍入到与该分数最接近的整数(本例中为0),然后将该整数值分配给double。通过使用100.0,您告诉Java将整数除以一个double,这个double知道它可以保留分数结果,而不是向下取整。

尝试这样做:

double decimalNumber = theVolume / 100.0;
末尾的
.0
将其转换为十进制数


edit:作为参考,它的行为是这样的,因为Java试图除以两个整数(当使用100时),所以它试图将结果输出为整数。结果是一个分数,因此Java默认情况下将其向下舍入到与该分数最接近的整数(本例中为0),然后将该整数值分配给double。通过使用100.0,您告诉Java将整数除以一个double,double知道它可以保留分数结果,而不是向下取整。

将卷解析为double

double theVolume=Double.parseDouble(volume);
double decimalNumber = theVolume/100;
int calc=(int) (maxVolume*decimalNumber);
mgr.setStreamVolume(AudioManager.STREAM_MUSIC,calc, 0);

将卷解析为双精度

double theVolume=Double.parseDouble(volume);
double decimalNumber = theVolume/100;
int calc=(int) (maxVolume*decimalNumber);
mgr.setStreamVolume(AudioManager.STREAM_MUSIC,calc, 0);

成功了,伙计!非常感谢你,伙计!非常感谢不要使用
Integer
实例。相反,请使用
int
原语(但也请参见下面的答案)。不要使用
Integer
实例。相反,请使用
int
原语(但也请参见下面的答案)。您是如何获得“maxVolume”的?@zygimantus-假定maxVolume设置在上游某个位置的。请看问题。您是如何获得“maxVolume”的?@zygimantus-假定maxVolume设置在上游某个位置。请看问题。