从小数点获取最后一个数字

本文关键字:数字 最后一个 获取 小数点 | 更新日期: 2023-09-27 18:31:01

我有一个问题。就我而言,我想检索十进制值的最后一位以进行舍入调整。以下是我的代码:

private void calculateADJ()
    {
        string result = Strings.Right(txtGTotal.Text, 1);
        if (result == "1" || result == "6")
        {
            txtStoreRA.Text = "-0.01";
            txtOutstanding.Text = (Convert.ToDouble(txtGTotal.Text) - 0.01).ToString("0.00");
        }
        if (result == "2" || result == "7")
        {
            txtStoreRA.Text = "-0.02";
            txtOutstanding.Text = (Convert.ToDouble(txtGTotal.Text) - 0.02).ToString("0.00");
        }
        if (result == "3" || result == "8")
        {
            txtStoreRA.Text = "0.01";
            txtOutstanding.Text = (Convert.ToDouble(txtGTotal.Text) + 0.01).ToString("0.00");
        }
        if (result == "4" || result == "9")
        {
            txtStoreRA.Text = "0.02";
            txtOutstanding.Text = (Convert.ToDouble(txtGTotal.Text) + 0.02).ToString("0.00");
        }
        else
        {
            txtOutstanding.Text = txtGTotal.Text;
        }
    }

例如,如果数字为 11.93,则会将其转换为 11.95。任何建议或帮助将不胜感激。供您参考,我正在使用Visual Studio 2005中的袖珍PC模拟器2003执行此操作。

我的问题是值没有像我预期的那样改变。

当我运行我的程序时,例如txtGTotal.Text = 11.94,所以我的txtOutStanding.Text应该是11.95。但是,txtOutStanding.Text 仍然是 11.94。

不知道谁是奉献的人,至少你可以给我解释一下。无缘无故地投入感觉很糟糕,在提出问题之前,理由至少可以改进下次。谢谢

我会说伊恩的答案比我重复的帖子中提供的答案要清楚得多。

从小数点获取最后一个数字

因为你的最低单位是(0.05,这是最小int 11/20th),最简单的方法是先将你的值乘以20,然后再使用Math.Round进行舍入,然后根据需要将其恢复。

或者,更简单地说,您可以将此0.05定义为您的lowestUnit

例如,假设您有:

txtGTotal.Text = "11.93";    
double val = double.Parse(txtGTotal.Text);

这样做:

double myLowestUnit = 0.05;
double result = myLowestUnit * Math.Round(val/myLowestUnit); //this will give you 11.95
txtOutStanding.Text = result.ToString("f2"); //use f2 to limit the number of string printed to two decimal places

要从TextBox获得val,只需使用double.Parse(txtGTotal.Text);

请注意,您可以使用string.ToString("f2")txtOutStanding TextBox中所需的格式打印值。