首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java-非零Int除以10等于0.0在浮动?

Java-非零Int除以10等于0.0在浮动?
EN

Stack Overflow用户
提问于 2013-07-30 07:12:53
回答 6查看 2.6K关注 0票数 1

我有一个音量控制滑块来控制在Android中播放音频文件的音量。

代码语言:javascript
复制
vSlider=(SeekBar) findViewById(R.id.seekBar2);
        vSlider.setMax(10);
        if(mediaPlayer.isPlaying()){
            isPlaying=true;
            try {
                currentPosition = mediaPlayer
                        .getCurrentPosition();
                double seconds=currentPosition/1000;
                int time= (int) Math.round(seconds);
                String timeS=Integer.toString(time);
                timer.setText(timeS+"s");
                Log.d("position",timeS);
                fSlider.setProgress(currentPosition);
            }  catch (Exception e) {

            }
            vSlider.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){

                @Override
                public void onProgressChanged(SeekBar seekBar, int progress,
                        boolean fromUser) {
                    float volume=progress/10;
                    Log.d("Progress", String.valueOf(progress));
                    Log.d("Volume",String.valueOf(volume));
                    mediaPlayer.setVolume(volume, volume);

                }
                @Override
                public void onStartTrackingTouch(SeekBar seekBar) { }
                @Override
                public void onStopTrackingTouch(SeekBar seekBar) { }                        
            });

正在正确检测滑块进度的int值,但浮动卷始终为0.0。我在这里做错什么了?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-07-30 07:14:37

代码语言:javascript
复制
float volume=progress/10;

对两个int进行操作,结果为int。所以把结果

代码语言:javascript
复制
float volume=(float)progress/10;

代码语言:javascript
复制
float volume=progress/10.0f;

参见铸造层次有显式和隐式强制转换

票数 4
EN

Stack Overflow用户

发布于 2013-07-30 07:14:47

使用float文本10.0f强制使用浮点算法。

代码语言:javascript
复制
float volume=progress/10.0f;

默认情况下,以下代码的R.H.S是一个整数模拟表达式:

代码语言:javascript
复制
float volume=progress/10;

因为progressint,而10int文字。由于它执行整数除法,如果progress小于10,表达式将计算为0volume将为0.0

票数 1
EN

Stack Overflow用户

发布于 2013-07-30 07:15:09

排在队伍里

代码语言:javascript
复制
float volume=progress/10;

首先要执行整数除法progress/10,然后得到一个整数结果(如果progress< 10,则得到0),然后将结果转换为float

你想要一个浮点除法而不是:

代码语言:javascript
复制
float volume=(float)progress/10;

在这里,我们首先对progress进行访问并使其成为一个float,然后进行除法并保存结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17940528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档