2013-07-26 35 views
1

这似乎BEYOND容易,但我不能看到找到一个明确的答案......转换的百分比,以小数?...使用音量控制

说我有一个字符串(体积),有一个百分比...(80,50等),我想要以DECIMAL格式获得数字,然后用它来确定设置手机的音量。我已经得到了maxVolume ...所以它只是得到正确的值,它的杀了我......

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

DecimalNumber是否为唯一现身为0.0 ...不管我给什么号码吗......?

+0

不要使用'Integer'实例。相反,使用'int'原语(但也见下面的答案)。 – Simon

回答

3

试着做这样的:

double decimalNumber = theVolume/100.0; 

.0在年底将其转换为十进制数。

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

+0

这是它的好友!非常感谢 – sykal

+0

@sykal很高兴帮助,祝你好运。 –

0

解析量为双

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

你是怎么得到'maxVolume'的? – zygimantus

+1

@zygimantus - 假设maxVolume设置在上游某处。看到问题。 –