簡體   English   中英

什么是Java DecimalFormat的c#等價物?

[英]What is the c# equivalent of Java DecimalFormat?

我如何將以下代碼轉換為C#

DecimalFormat form 
String pattern = "";
for (int i = 0; i < nPlaces - nDec - 2; i++) {
        pattern += "#";
}
pattern += "0.";
for (int i = nPlaces - nDec; i < nPlaces; i++) {
        pattern += "0";
}
form = (DecimalFormat) NumberFormat.getInstance();
DecimalFormatSymbols symbols = form.getDecimalFormatSymbols();
symbols.setDecimalSeparator('.');
form.setDecimalFormatSymbols(symbols);
form.setMaximumIntegerDigits(nPlaces - nDec - 1);
form.applyPattern(pattern);

編輯特別的問題是我不希望小數分隔符改變Locale(例如,一些Locales會使用',')。

對於小數分隔符,您可以在NumberFormatInfo實例中設置它並將其與ToString一起使用:

    NumberFormatInfo nfi = new NumberFormatInfo();
    nfi.NumberDecimalSeparator = ".";

    //** test **
    NumberFormatInfo nfi = new NumberFormatInfo();
    decimal d = 125501.0235648m;
    nfi.NumberDecimalSeparator = "?";
    s = d.ToString(nfi); //--> 125501?0235648

要獲得java版本的結果,請使用帶有自定義數字格式字符串ToString()函數版本(即:您所謂的模式):

s = d.ToString("# ### ##0.0000", nfi);// 1245124587.23     --> 1245 124 587?2300
                                      //      24587.235215 -->       24 587?2352

System.Globalization.NumberFormatInfo

在C#中, 十進制數decimal類型存儲,內部表示允許您執行十進制數學運算而不會出現舍入錯誤。

獲得數字后,可以使用Decimal.ToString() 格式化它以進行輸出。 此格式是特定於語言環境的; 它尊重您當前的文化背景

暫無
暫無

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

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