簡體   English   中英

如何在C#中將點精度添加到十進制?

[英]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);

在這種特殊情況下,這不太可能成為問題,但是您應避免混用doubledecimal 您可以使用:

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

使用字符串格式來格式化輸出

 Console.WriteLine("Total weekly pay is $ {0:N2} .",total);

檢查此鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM