我在设置文件中设置十进制值时遇到了一些麻烦,当它询问我选择小数的变量类型时,默认值为 0.10,这是为了模仿 10 美分,但是当我运行我的程序和检查它显示为 0.01 的变量的值,这是因为我应该在末尾添加一个“m”,而这在设置文件中是不允许的。有一些解决方法吗?
用户也可以设置他/她自己输入到文本框中的价格,例如可以是 0.30(30 美分)我如何将文本框值转换为 0.30m?
使用双精度不是一种选择,我不想最终得到像 $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);
}
}