2013-10-11 6 views
0

У меня возникли проблемы с настройкой десятичных значений в файле настроек, когда он спрашивает меня о типе переменной. Я выбираю десятичную цифру, а значение по умолчанию - 0,10, это значит имитировать 10 цента, но когда я запускаю свою программу и проверяю значение переменной, она отображается как 0,01, это потому, что я должен добавить «m» в конце, и это не разрешено в файле настроек. есть ли какая-то работа для этого?с использованием десятичных значений в пользовательских настройках

также пользователь может установить свою цену, введенную в текстовое поле, это может быть, например, 0,30 (30 центов), как я могу преобразовать значение текстового поля в 0,30 м?

, используя двойной вариант, не является вариантом, я не хочу, чтобы в итоге что-то вроде $ 2.99999999 десятичный тип идеален, если бы я мог использовать его в файле настроек, как я могу жестко закодирован.

Спасибо за ответы.

public void beginUser(int tblSize) 
    { 

     decimal tblPrice = 0.00m; 
     int minCount = 0; 
     decimal curCost = 0.00m; 
     string timeStarted = string.Format("{0:HH:mm:ss tt}", DateTime.Now); 

     //Setup table price 
     switch (tblSize) 
     { 
      case 0: 
       tblPrice = Properties.Settings.Default.tblSmallPrice; 
       //tblPrice = 0.10m //this works 
       break; 
      case 1: 
       tblPrice = Properties.Settings.Default.tblBigPrice; 
       //tblPrice = 0.15m // this works 
       break; 
      default: 
       tblPrice = 0.10m; 
       break; 
     } 

     //Check how tblPrice appears. 
     MessageBox.Show(Convert.ToString(tblPrice)); 

     try 
     { 
      while (true) 
      { 

       Thread.Sleep(100); 
       curCost += tblPrice; 
       minCount += 1; 
       if (minCount == 60) { Thread.CurrentThread.Abort(); } 
      } 
     } 
     catch (ThreadAbortException) 
     { 
      TimeSpan span = TimeSpan.FromMinutes(minCount); 

      string output = String.Format("Cost: €{0}\r\ncurCost: {1} hour(s) {2} minutes\r\nStarted: {3}", curCost, span.Hours, span.Minutes, timeStarted); 
      MessageBox.Show(output); 
     } 


} 
+1

Как вы отображения значения, и вы уверены, что по умолчанию действительно 0,1, а не 0,01? Чтобы проанализировать введенный пользователем текст, используйте 'decimal.TryParse'. Обратите внимание, что суффикс 'm' относится только к исходному коду C# - это просто суффикс, указывающий тип литерала. –

+0

@Jon Skeet, моя программа использует цикл while, чтобы отслеживать, сколько минут пользователь играет, цена за минуту равна 0,10 см, если я жестко кодирую значение 0,10 м, я получаю правильную цену в 6,00 долларов за 1 час , если я установил 0.10 в файле настроек, я получаю цену в $ 0.60 – user2864613

+0

. Как вы помещаете ее в файл настроек? Я ожидаю, что он будет работать нормально. –

ответ

0

Использование запятых! Он должен работать: 0,1 становится 0,1.

Здесь вы можете увидеть, как мне удалось вставить:

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