【问题标题】:How do I convert a double variable to an integer variable?如何将双精度变量转换为整数变量?
【发布时间】:2014-11-06 00:19:21
【问题描述】:

我需要将 n 转换为整数。我试过h = rnd.Next(0, Math.Floor(n)),而 n 存储为双精度。我现在在那个地方的代码如下。

 Random rnd = new Random();
 k = rnd.Next(50, 250);

 int n = Math.Floor(Math.Sqrt(300-k));

 h = rnd.Next(0, n);

【问题讨论】:

  • Convert.ToInt32(n)
  • 你知道Random会给你什么吗?
  • 是的,但我需要将涉及该随机数的计算转换为整数。

标签: c# int double


【解决方案1】:

Math.Floor 返回一个双精度值,因为此方法可以返回特殊值,例如 NaN 和无穷大。你需要投到int:(int)Math.Floor(3.14)

【讨论】:

    【解决方案2】:

    由于在这种情况下,Math.Sqrt 只能返回正数 double,您可以跳过对 Math.Floor 的调用,只需将 Math.Sqrt 的结果转换为 int,这将截断结果:

    int n = (int)Math.Sqrt(300-k);
    

    请注意,将double 截断为int 只会丢弃double 的小数位,调用Math.Floor 会将double 舍入到负无穷大。在这种情况下,由于您的结果始终为正数,因此它们最终是相同的,但如果您使用负数,则操作会产生不同的结果。

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 2018-11-12
      相关资源
      最近更新 更多