1

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

假设我有一个包含百分比的字符串(音量)......(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 的形式出现...无论我给它什么数字...?

4

2 回答 2

5

尝试这样做:

double decimalNumber = theVolume / 100.0;

最后.0将其转换为十进制数。

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

于 2013-07-26T19:44:43.973 回答
0

将音量解析为双精度

double theVolume=Double.parseDouble(volume);
double decimalNumber = theVolume/100;
int calc=(int) (maxVolume*decimalNumber);
mgr.setStreamVolume(AudioManager.STREAM_MUSIC,calc, 0);
于 2013-07-26T19:51:55.873 回答