【问题标题】:Round number 0.1 to 0.10整数 0.1 到 0.10
【发布时间】:2015-01-20 15:48:13
【问题描述】:

我正在上学做 C# 项目,我需要帮助,我必须生成从 0.00 到 1.00 的随机数到大小为 5*5 的矩阵。

double[,] matrix = new double[5, 5];

for (int i = 0; i < 5; i++)
{
    for (int j = 0; j < 5; j++)
    {
        matrix[i, j] = (rand.Next(0, 100 + 1) / 100.0);
        Console.Write(" {0}", matrix[i, j]);
    }

    Console.WriteLine();
}

Console.ReadKey();

但是当我写这些数字时,有些数字显示为 0.1,我想写为 0.10,怎么办?

【问题讨论】:

  • 1.不四舍五入,2.使用格式化输出或格式化ToString
  • 您知道Random.NextDouble() 或者您只希望矩阵中的增量为 1/100?
  • @TheZerda,请接受答案。 meta.stackexchange.com/questions/5234/…

标签: c# arrays matrix double decimal


【解决方案1】:

但是当我写下这些数字时,一些数字显示为 0.1,我想要 像0.10这样写,怎么样?

那么你需要使用ToString("N2");

Console.Write(" {0}", matrix[i, j].ToString("N2"));

【讨论】:

  • # 是可选的。 0 是强制性的,所以我猜你的意思是 0.00
  • @TheZerda 你欢迎老兄。我很高兴能帮上忙。
  • 可以直接在第一个参数中使用格式,像这样:Console.Write(" {0:N2}", matrix[i, j]);
  • @Andrew 我不知道这个。谢谢
  • @TheZerda,如果它解决了您的问题,您应该接受答案。在旁注中,请查看上面评论中的简短表格。
【解决方案2】:

为了更明确地表示小数,以防您以后想更改为或多或少的精度...

 String.Format("{0:0.00}", matrix[i, j]);  

【讨论】:

  • 只需更改N 旁边的数字即可获得所需的精度。 ;) 就像在Console.Write(" {0:N9}", matrix[i, j]); 中一样。
  • 我认为这将为使用 而不是 .作为保持数字分隔符,但似乎这在当前设置的区域性的 String.Format 中自动发生。我给克里斯托斯的答案一个橙色箭头。
  • 是的。如果您使用逗号而不是点,它会将其视为千位分隔符并因此使用它,而不是替换显示的符号。如果你想使用特定的文化,我认为你必须使用 string.FormatIFormatProvider
【解决方案3】:

你可以用这个:

var d1 = 0.2;
var d2 = 1.20;
Console.WriteLine(d1.ToString("0.00"));  // 0.20
Console.WriteLine(d2.ToString("0.00"));  // 1.20

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 2016-11-09
    • 2023-02-07
    • 2018-10-04
    • 2020-02-01
    • 2011-01-14
    • 2013-03-10
    • 1970-01-01
    相关资源
    最近更新 更多