从小数中获取最后一位数字

The*_*fly -1 c# pocketpc visual-studio-2005

我有个问题.在我的情况下,我想检索十进制值的最后一位数,以进行舍入调整.以下是我的代码:

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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

例如,如果数字是11.93,它将转换为11.95.任何建议或帮助将非常感激.为了您的信息,我在Visual Studio 2005中使用Pocket PC emulator 2003进行此操作.

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

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

不确定是谁投入,至少你可以给我解释.在没有理由的情况下进行投入感觉很糟糕,在提问之前,下一次的原因至少可以是一个改进.谢谢

我会说Ian的答案比我复制的帖子提供的答案要清楚得多.

Ian*_*Ian 5

因为你的最低单位是(0.05,它是1/20th最小的int 1),最简单的方法是20Math.Round用于舍入之前先将值乘以,然后根据需要将其恢复.

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

例如,假设你有:

txtGTotal.Text = "11.93";    
double val = double.Parse(txtGTotal.Text);
Run Code Online (Sandbox Code Playgroud)

做这个:

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
Run Code Online (Sandbox Code Playgroud)

并获得valTextBox,只需使用double.Parse(txtGTotal.Text);

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