[英]How to add point precision to decimal in C#?
我想知道如何將點精度加到十進制。 我制作了一個小程序來計算工人的每周工資,但在某些情況下,當結果為$ 145.60時,它顯示為$ 145.6,但我希望該程序將結果顯示為$ 145.60。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int hours;
decimal total;
Console.Write("Total working hours: ");
hours = int.Parse(Console.ReadLine());
total = Convert.ToDecimal(hours * 7.50);
if (hours > 40)
total = total + Convert.ToDecimal((hours - 40) * 3.75);
Console.WriteLine("Total weekly pay is $" + total + ".");
Console.ReadLine();
}
}
}
首先,修復此行和類似的行:
total = Convert.ToDecimal(hours * 7.50);
在這種特殊情況下,這不太可能成為問題,但是您應避免混用double
和decimal
。 您可以使用:
decimal total = hours * 7.5m;
同樣地:
if (hours > 40)
{
total += (hours - 40) * 3.75m;
}
接下來,要格式化小數點,您可以將整個Console.WriteLine
轉換為使用格式字符串-避免丑陋的字符串連接-並在格式說明符中指定位數:
Console.WriteLine("Total weekly pay is ${0:0.00}.", total);
0.00
是一個自定義數字格式字符串 ,它強制始終在小數點前至少有一位數字,並始終在小數點后始終正好是兩位數字。 在您的情況下,反正不會超過兩個,但是例如,如果您的加班時間變為3.755,它將四舍五入。 您必須檢查它是否按照您想要的方式進行了四舍五入-您可能想顯式地對其進行四舍五入。
如注釋中所述,如果需要,可以改用N2
標准數字格式字符串 。 他們會給出不同的行為,當薪水超過$ 1000個- N2
會給你而分組分隔符(如1,234.56 $) 0.00
不會。
考慮的另一種選擇是刪除$
的硬編碼,並使用c
標准數字格式表示貨幣:
Console.WriteLine("Total weekly pay is {0:c}.", total);
這將使用當前區域性的默認貨幣表示方式。 當然,這意味着您必須先使用正確的文化習慣-我是英國用戶,所以在我的機器上,它使用£而不是$...。但是,如果您知道這兩種文化都適合文字和貨幣,這可能是最干凈的方法。
這將有助於:
decimal d = Convert.ToDecimal(3.10);
Console.WriteLine(d.ToString("#.00"));
結果將是3.10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.