【问题标题】:Math.Sqrt(2/3) returns 0 [duplicate]Math.Sqrt(2/3) 返回 0 [重复]
【发布时间】:2023-03-20 23:25:01
【问题描述】:

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

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

显示 0。 答案是

0.8164,我知道我还必须使用 Math.Round 来四舍五入,但目前的问题是我得到 0

【问题讨论】:

  • 2/3 是整数除法,返回0 。你想使用浮点数
  • 为什么这被否决了?这个问题写得很好,记录了预期和实际的行为。
  • @Bathsheba - 因为它没有显示任何研究工作。即使尝试诊断问题也会表明产生问题的代码部分是除法而不是平方根运算。
  • 我们可以同意不同意。这样的东西对于初学者来说很难研究。
  • 还不错...在 5 分钟内在这里学到了一些东西,谢谢:p

标签: c#


【解决方案1】:

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

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

【讨论】:

  • 如果我使用 0.667 而不是它起作用的分数,你的答案中的 f 是什么意思?
  • 表示将数字视为浮点数。
【解决方案2】:

2 / 3是整数运算,你要的是2.0 / 3,意思是我要使用浮点数。

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

在您的示例中,2 / 3 是一个整数运算,这意味着结果会向下舍入到最接近的整数,即零。为避免这种情况,应将至少一个操作数视为某个浮点值,使用2.02f(或者3.03f)。

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 2015-07-23
    • 2012-12-12
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多