C# 我的行动指令有问题吗?

C# 我的行动指令有问题吗?,c#,visual-studio-2008,floating-point,C#,Visual Studio 2008,Floating Point,我似乎有点数学问题 基本上我想做的是让两个分组框填充整个表单。当表单加载时,我想取两个不同的数字,并将它们转换为表单高度的百分比,然后相应地调整GroupBox的高度。我认为这会奏效: Debug.WriteLine(((((programdirs.Length * 100) / totaldirs) * 100) / this.Height) * 100); 但是,它最终总是打印0。有没有可能是小数的四舍五入,因为我是在用类似整数的数字进行运算?我该怎么做才能让编译器将计算结果保留为浮点数,

我似乎有点数学问题

基本上我想做的是让两个分组框填充整个表单。当表单加载时,我想取两个不同的数字,并将它们转换为表单高度的百分比,然后相应地调整GroupBox的高度。我认为这会奏效:

Debug.WriteLine(((((programdirs.Length * 100) / totaldirs) * 100) / this.Height) * 100);

但是,它最终总是打印0。有没有可能是小数的四舍五入,因为我是在用类似整数的数字进行运算?我该怎么做才能让编译器将计算结果保留为浮点数,直到我想在最后进行四舍五入?

没关系,我回答了我自己的问题:p

当我认为在我的计算中使用类似整数的数字会导致小数被截断时,我的思路是正确的。输入任何静态数字,比如我输入的100,都会导致结果始终为整数,而不管它可能是什么。所以,最后,我就是这样解决我的问题的:

            Debug.WriteLine(((((programdirs.Length * (float)100) / totaldirs) * (float)100) / this.Height) * (float)100);

现在,我需要做的就是绕过它。

另一个选项可能是更改操作顺序,只要小心避免溢出,操作顺序就应该有效:

Debug.WriteLine(programdirs.Length * 100 * 100 * 100 / totaldirs / this.Height);

您可以移动任何一个除法并合并一个或多个100值(即,将100*100替换为10000)。

这确实使事情看起来更简单,谢谢:)不过我实际上已经决定更改接口。