[英]Trim decimal to 2 decimal places except if decimal has more than 2 decimal places
所以這是一個挑剔的問題。 我到處尋找類似的問題,但是找不到專門回答我問題的問題。
我正在制作一個winforms應用程序,該應用程序可以從數值上下轉換中獲取數據,並將其放置在Word文檔變量中。 數字下移的精度為小數點后4位,因為某些價格(例如€0,0125)例如印刷合同。 但其他價格將節省,例如€12,5000。 我目前將數字固定為2個小數位,如下所示:
string value = type.GetValue().ToString().Trim(new char[] { '\'' });
//Changes commas for European standard and removes the excess zeros after the comma.
if (type.GetType().ToString().EndsWith("Decimal"))
{
string s;
string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
if (sep == ".")
s = double.Parse(value).ToString("n2").Replace('.', ',');
else
s = double.Parse(value).ToString("n2");
wordDoc.Variables[type.GetName()].Value = s;
}
else
wordDoc.Variables[type.GetName()].Value = value;
但是我似乎無法弄清楚如何檢測何時不應該修整小數位。 我不一定需要代碼示例,如果有人可以按正確的方向發送給我,那將是一個很大的幫助。
注意:更改數字下降的精度並不是真正的選擇,因為它們是由方法動態創建的。
只需使用自定義格式的字符串 - #,##0.00##
將顯示最小2 dp,最大4 dp
decimal x = 12.50000m;
decimal y = 0.0125m;
string sx = x.ToString("#,##0.00##"); // "12.50"
string sy = y.ToString("#,##0.00##"); // "0.125"
如果需要逗號十進制分隔符,請使用適當的CultureInfo
或使用正確的屬性創建NumberFormatInfo
:
var nfi = new NumberFormatInfo
{
NumberDecimalSeparator = ",",
NumberGroupSeparator = ".",
};
string s = 1234.56m.ToString("#,##0.00##", nfi); // "1.234,56"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.