C# 将整数除法转换为浮点(f)

C# 将整数除法转换为浮点(f),c#,floating-point,media-player,C#,Floating Point,Media Player,我使用MediaPlayer播放声音,要更改音量,必须设置音量属性的值,该属性为浮点值。(示例显示设置为0.5f) 我的音量设置是基于百分比的,我如何将80%的音量转换为0.5f来设置音量。我的代码: float volume = (Program.EffectsVolumeSlider.Percent > 0 ? Convert.ToSingle(Program.EffectsVolumeSlider.Percent / 100) : 0.0f); this.FireballSound

我使用MediaPlayer播放声音,要更改音量,必须设置音量属性的值,该属性为浮点值。(示例显示设置为0.5f)

我的音量设置是基于百分比的,我如何将80%的音量转换为0.5f来设置音量。我的代码:

float volume = (Program.EffectsVolumeSlider.Percent > 0 ? Convert.ToSingle(Program.EffectsVolumeSlider.Percent / 100) : 0.0f);

this.FireballSound.Volume = volume;
this.IceSound.Volume = volume;
this.SmokeSound.Volume = volume;

程序.EffectsVolumeSlider.Percent
为55时,此输出的音量为0.0

您的代码使用整数除法:

55 / 100 
将始终返回0,因为该除法的整数部分为0。您需要将一个或多个操作数强制转换为浮点,最简单的方法是:

Program.EffectsVolumeSlider.Percent / 100.0f
这将强制浮点除法,它将返回正确的值(.55)


+1。请注意,这可能只是答案的一半——缺少“从80%体积到0.5f”的线性插值,但帖子中的样本可能完全是错误的(肯定缺少0-100%映射到像
[0,0.79f]
)的范围。@AlexeiLevenkov,是的,我不确定OP想要的插值是什么,所以我把它取消了。谢谢你的关注
Convert.ToSingle
在这种情况下实际上是无用的。@我也这么怀疑Wallstrider,但留下来是为了更接近原始代码,以防原因不明。再想一想,我同意这可能会引起一些混乱,所以我把它删除了。谢谢你的反馈!
float EffectsVolumeSliderPercent = 55.0f;
float volume = EffectsVolumeSliderPercent > 0.0f ? EffectsVolumeSliderPercent / 100.0f : 0.0f;
Console.WriteLine(volume);
Console.ReadLine();