【问题标题】:Make decimal point to whole numbers将小数点设为整数
【发布时间】:2016-05-12 11:34:45
【问题描述】:

我有 textBox1,它包含数字 10。我需要让数字 10 加倍小数点。我当前的代码是:

variables.myNum = double.Parse(textBox1);

我已经在变量类中声明了 myNum:

public static double myNum;

使用该代码,我可以将数字 10 翻倍。问题是我也需要小数点所以我想要“10”。如果我写到 textBox1 “10”。它不起作用。

编辑:.ToString("0.00") 给整数小数点,但它也给了我不想要的那两个零。整数只需要点。

编辑:首先我有:

10
10.5
10.58
10.589

我想要:(注意第一个十之后的点)

10.
10.5
10.58
10.589

使用 .ToString("0.00") 我可以得到:

10.00
10.50
10.58
10.58

但我不希望最后出现那些多余的零。只有不为零的点和数字。

【问题讨论】:

  • 没有“带小数点的双精度数”这样的概念——它只是一个数字。你什么时候使用 myNum?当您将其转换为字符串时,您基本上应该按照您想要的方式格式化它。
  • 您的 SO 个人资料并未说明您居住在哪个国家/地区。当您提出此类问题时,这一点很重要。尝试使用逗号而不是小数点。如果您坚持使用句点,则必须将 CultureInfo.InvariantCulture.NumberFormat 传递给 Parse() 方法。
  • 我在 string[] 行 ={...} 中使用 myNum。我可以在那里转换它吗?我想用句号代替逗号。我已经设置 CultureInfo 以便在逗号上加上句号。
  • 如果您想要的只是一个后面带有. 的数字,那么您可以适当地舍入小数点,转换为字符串并将. 连接到末尾。但我想不出这有什么用 - 我会对你这样做的为什么感兴趣。
  • 我正在做一个 G 代码生成器。在 G 代码中,每个数字都必须有一个小数点。如果我在每个数字后加上点,那么十进制数字有两个小数点。

标签: c# winforms double decimal


【解决方案1】:

如果输出中还没有包含 .,您可以添加 .

public static string ToGCodeNumber(double number, int digits)
{
    // rounding (optional)
    double number = Math.Round(number, digits);

    // result with or without '.'
    string intermediateResult = roundedNumber.ToString(CultureInfo.InvariantCulture);
    if(!intermediateResult.Contains(".")
        intermediateResult += ".";

    // final result with a guaranteed '.'  
    return intermediateResult;
}

【讨论】:

  • 您的代码在“返回”中有错误。似乎该函数试图返回 void。
【解决方案2】:
static void Main(string[] args)
{
    Console.WriteLine(Test1());
    Console.WriteLine(Test2());
    Console.ReadLine();
}

static decimal Test1()
{
    return 10.999999999999999999999M;
}
static decimal Test2()
{
    return (decimal)10.999999999999999999999;
}

第一个返回 10.999999999999999999999 但第二个返回 11

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 2013-01-17
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多