C# 为什么我的程序总是以零作为响应?

C# 为什么我的程序总是以零作为响应?,c#,casting,floating-point,C#,Casting,Floating Point,我对编程和测试一些我知道的东西非常陌生,我想我会尝试制作一个程序。但不管输入是什么,它都会以0进行响应。我很抱歉,如果它是混乱的,但在我的框架内的理解,你能显示一个修复 谢谢你的帮助 代码 类程序 { 静态void Main(字符串[]参数){ //命中概率 控制台.WriteLine(“欢迎使用远程死亡计算器,请输入弹道技能(BS)”+环境.NewLine+“模型射击”); float-BallisticSkillf=Convert.ToSingle(Console.ReadLine());

我对编程和测试一些我知道的东西非常陌生,我想我会尝试制作一个程序。但不管输入是什么,它都会以0进行响应。我很抱歉,如果它是混乱的,但在我的框架内的理解,你能显示一个修复

谢谢你的帮助

代码
类程序
{
静态void Main(字符串[]参数){
//命中概率
控制台.WriteLine(“欢迎使用远程死亡计算器,请输入弹道技能(BS)”+环境.NewLine+“模型射击”);
float-BallisticSkillf=Convert.ToSingle(Console.ReadLine());
浮动概率f;
if(弹道技能=2)
受伤概率f=((浮动)(5/6));
否则如果(武器强度HF-目标能力F==1)
受伤概率f=((浮动)(4/6));
否则如果(武器强度HF-目标能力F==0)
受伤概率f=((浮动)(3/6));
否则如果(武器强度HF-目标能力F==-1)
受伤概率f=((浮动)(2/6));
否则如果(武器强度HF-目标能力F
这将强制转换为浮动两个整数除2/6=0的结果

努力

 (float)2 / 6  

计算单位为整数,然后将值转换为浮点数。应使用浮点数进行计算

WoundProbabilityf = 5F / 6F;
除此之外,您正在对浮点数进行计算,并对整型进行等分:

WeaponStrengthf - TargetToughnessf == 1
当你在右边使用浮点数时,点击右边整数的变化会非常麻烦。你可以更好地使用范围:

float fHitForce = WeaponStrengthf - TargetToughnessf;
fHitForce >= 1 && fHitForce < 2
float fHitForce=武器强度hf-目标能力f;
fHitForce>=1&&fHitForce<2
试试看

WoundProbabilityf = ( (float)( 5 / 6.0 ) );
如果分子和分母都是整数,结果就是整数。其中一个必须是浮点。如果是变量,你可以这样做

WoundProbabilityf =  (float)( 5 / (n * 1.0) );
1/6(以及其他计算)是在整数数学中执行的,因此结果总是0。请注意,您现在看到的是浮点。
WoundProbabilityf = ( (float)( 5 / 6.0 ) );
WoundProbabilityf =  (float)( 5 / (n * 1.0) );