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

C# 从小数中获取最后一位数字,c#,visual-studio-2005,pocketpc,C#,Visual Studio 2005,Pocketpc,我有个问题。在我的例子中,我想检索十进制值的最后一位,以便进行舍入调整。以下是我的代码: private void calculateADJ() { string result = Strings.Right(txtGTotal.Text, 1); if (result == "1" || result == "6") { txtStoreRA.Text = "-0.01"; txtOutst

我有个问题。在我的例子中,我想检索十进制值的最后一位,以便进行舍入调整。以下是我的代码:

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。任何建议或帮助都将不胜感激。供您参考,我正在VisualStudio2005中使用pocket PC emulator 2003执行此操作

我的问题是,值没有像我预期的那样更改

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

不知道谁是献身的人,至少你可以给我解释一下。没有理由的投入让人感觉很糟糕,有理由至少可以是下次提问前的进步。多谢各位


我想说,伊恩的答案比我复制的帖子上提供的答案要清楚得多。

因为你的最低单位是(
0.05
,即
1/20
最小的
int
1
),最简单的方法是先将值乘以
20
,然后再使用
Math.Round
进行取整,然后根据需要将其还原

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

例如,假设您有:

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
文本框中所需的格式打印值。舍入是更好的选择吗?你到底在哪里遇到了问题?@AndyJ不是数学。四舍五入只是转换成特定的小数位?我的任务是得到最后一个值并进行计算。这和Math.Round.Hmm不一样,这似乎是一个问题。你为什么要做这么奇怪的取整?@LarsKristensen抱歉,我的问题中没有提到它,现在将更新。我的问题是,文本框没有像我期望的那样改变值谢谢,它现在工作得很好@蝴蝶很高兴知道这一点。请注意,您可能还希望使用
ToString(“f2”)
来正确设置
文本框的格式。Text
非常感谢!