2016-05-12 2 views
1

У меня есть textBox1, и он содержит номер 10. Мне нужно, чтобы этот номер 10 удваивался с десятичной точкой. Мой текущий код:Сделать десятичную точку целыми числами

variables.myNum = double.Parse(textBox1); 

Я объявил тупит в классе переменных:

public static double myNum; 

С этим кодом, я получаю, что число 10 в два раза. Проблема в том, что мне нужно иметь десятичную точку, так что я хотел бы иметь «10.». Если я напишу в textBox1 "10." он не работает.

EDIT: .ToString ("0.00") дает десятичную точку целым числам, но также дает те два нулей, которые мне не нужны. Для целых чисел требуется только точка.

EDIT: Во-первых у меня есть:

10 
10.5 
10.58 
10.589 

Я хотел бы иметь: (обратите внимание на точку после 1-й десятке)

10. 
10.5 
10.58 
10.589 

С .ToString ("0.00") я могу получить:

10.00 
10.50 
10.58 
10.58 

Но я не хочу лишних нулей в конце. Только точка и числа, которые не равны нулю.

+1

Нет такой концепции, как «double с десятичной точкой» - это всего лишь число. Когда вы * используете * 'myNum'? Вы должны в основном форматировать его, как вы хотите, когда конвертируете его в строку. –

+0

Ваш профиль SO не говорит, в какой стране вы живете. Это важно, когда вы задаете такой вопрос. Попробуйте использовать запятую вместо десятичного периода. Если вы настаиваете на использовании периода, вы должны передать CultureInfo.InvariantCulture.NumberFormat методу Parse(). –

+0

Я использую myNum в строке [] lines = {...}. Могу ли я преобразовать его там? Я хочу использовать период вместо запятой. Я установил CultureInfo, чтобы сделать период за запятой. – kah

ответ

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; 
} 
+0

В вашем коде есть ошибка в 'return'. Кажется, что функция пытается вернуть пустоту. – kah

+0

@kah Исправлено, теперь нужно работать –

-4
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 но и seccond возвращает 11

+4

Вы прочитали вопрос? – leppie

Смежные вопросы