我的操作订单有问题吗?

时间:2010-12-04 05:03:47

标签: c# visual-studio-2008 floating-point

我似乎在这里遇到了一些数学问题。

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

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

然而,它总是最终打印0.它是否有可能是小数点四舍五入,因为我正在执行类似整数的运算?我该怎么做才能让编译器将计算保留在浮点数中,直到我想在结束时将其四舍五入为止?

2 个答案:

答案 0 :(得分:1)

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

当我认为在我的计算中使用类似整数的数字会导致它切断小数时,我正走在正确的道路上。输入任何静态数字,对我来说就像100,导致结果总是一个整数,无论​​可能是什么。所以,最后,这就是我解决问题的方法:

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

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

答案 1 :(得分:0)

另一种选择可能是改变操作的顺序,只要你小心避免溢出就应该有效:

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

你可以移动任何一个分区并组合一个或多个100个值(即用10000替换100 * 100)。