Math.Sqrt(2/3)返回0

时间:2016-12-01 09:09:47

标签: c#

我真的很困惑,为什么会这样,我的代码:

<section class="building-bg">
	<div class="container">
		<div class="row">
			<div class="col-md-8">
				<!-- text content -->
			</div>
			<div class="col-md-4">
				<!-- png image with some negative margins or translate property -->
			</div>
		</div>
	</div>
</section>

显示0。 答案是

0.8164,我知道我也必须使用Math.Round来解决这个问题,但目前问题是我得到了0

2 个答案:

答案 0 :(得分:10)

问题是由数字的自动整数评估引起的。使用:

double x = Math.Sqrt(2f/3f);
MessageBox.Show(x.ToString());

答案 1 :(得分:2)

2 / 3是一个整数运算,你想要的是2.0 / 3,这意味着我想使用浮点数。

您认为Intereger与您对数学的了解不同。在编程语言中,它意味着int操作的结果本身就是一个整数。

在您的示例中,2 / 3是一个整数运算,这意味着结果向下舍入到最接近的整数,即0。要避免这种情况,请指出至少应将一个操作数作为某个浮点值进行处理,使用2.02f(替代3.03f)。