Удалить номер из текстового поля - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть это число в текстовом поле "84,8441546842904", как конвертировать в 84,8 или 84,84 при нажатии кнопки?

Ответы [ 4 ]

3 голосов
/ 13 декабря 2011

Если под этим вы подразумеваете, что хотите проанализировать значение и округлить его до определенного количества десятичных знаков:

double value = Math.Round(double.Parse(textbox.Text), 2);

проанализирует текст и округлит его до 2 десятичных знаков.Вам может понадобиться использовать объект System.Globalization.CultureInfo при разборе для учета форматирования чисел в вашей местной культуре.

См. http://msdn.microsoft.com/en-us/library/75ks3aby.aspx

1 голос
/ 19 марта 2012

Я использую этот тип функций для проверки ввода пользователя.

Этот подход к проблеме также учитывает формат чисел культуры пользователя!

namespace Your_App_Namespace
{

public static class Globals
{
    public static double safeval = 0; // variable to save former value!

    public static bool isPositiveNumeric(string strval, System.Globalization.NumberStyles NumberStyle)
    // checking if string strval contains positive number in USER CULTURE NUMBER FORMAT!
    {
        double result;
        boolean test;
        if (strval.Contains("-")) test = false;
        else test = Double.TryParse(strval, NumberStyle, System.Globalization.CultureInfo.CurrentCulture, out result);
               // if (test == false) MessageBox.Show("Not positive number!");
        return test;
    }

    public static string numstr2string(string strval, string nofdec)
    // conversion from numeric string into string in USER CULTURE NUMBER FORMAT!
    // call example numstr2string("12.3456", "0.00") returns "12.34"
    {
        string retstr = 0.ToString(nofdec);
        if (Globals.isPositiveNumeric(strval, System.Globalization.NumberStyles.Number)) retstr = double.Parse(strval).ToString(nofdec);
        else retstr = Globals.safeval.ToString(nofdec);
        return retstr;
    }

    public static string number2string(double numval, string nofdec)
    // conversion from numeric value into string in USER CULTURE NUMBER FORMAT!
    // call example number2string(12.3456, "0.00") returns "12.34"
    {
        string retstr = 0.ToString(nofdec);
        if (Globals.isPositiveNumeric(numval.ToString(), System.Globalization.NumberStyles.Number)) retstr = numval.ToString(nofdec);
        else retstr = Globals.safeval.ToString(nofdec);
        return retstr;
    }
}

// Other Your_App_Namespace content

}

    // This is the way how to use those functions

    // function to call when TextBox GotFocus
    private void textbox_clear(object sender, System.Windows.RoutedEventArgs e)
    {
        TextBox txtbox = e.OriginalSource as TextBox;
        // save original value
        Globals.safeval = double.Parse(txtbox.Text);
        txtbox.Text = "";
    }

    // function to call when TextBox LostFocus
    private void textbox_change(object sender, System.Windows.RoutedEventArgs e)
    {
        TextBox txtbox = e.OriginalSource as TextBox;
        // text from textbox into sting with checking and string format
        txtbox.Text = Globals.numstr2string(txtbox.Text, "0.00");
    }
1 голос
/ 13 декабря 2011

Похоже, вы пытаетесь урезать число с точностью до 1 или 2 (разве «,» не используется в некоторых странах как США.?).Если это то, что вам нужно, вы можете использовать Double.Parse, чтобы преобразовать его в Double, а затем посмотреть параметры формата строки, описанные здесь , чтобы отформатировать его обратно в текстовое поле.

0 голосов
/ 13 декабря 2011
double i = 0;
if (double.TryParse(tbxNumber.Text,out i)) {
    MessageBox.Show("number is " + i.ToString());
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...