У меня возникли проблемы с настройкой десятичных значений в файле настроек, когда он спрашивает меня о типе переменной. Я выбираю десятичную цифру, а значение по умолчанию - 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);
}
}
Как вы отображения значения, и вы уверены, что по умолчанию действительно 0,1, а не 0,01? Чтобы проанализировать введенный пользователем текст, используйте 'decimal.TryParse'. Обратите внимание, что суффикс 'm' относится только к исходному коду C# - это просто суффикс, указывающий тип литерала. –
@Jon Skeet, моя программа использует цикл while, чтобы отслеживать, сколько минут пользователь играет, цена за минуту равна 0,10 см, если я жестко кодирую значение 0,10 м, я получаю правильную цену в 6,00 долларов за 1 час , если я установил 0.10 в файле настроек, я получаю цену в $ 0.60 – user2864613
. Как вы помещаете ее в файл настроек? Я ожидаю, что он будет работать нормально. –