從十進制值
回答
string.Format("{0:0.#####}", 0.0030)
或
var money=1.3000m;
money.ToString("0.#####");
以供將來參考我由約翰·希恩建議.NET Format String Quick Reference。
嗯,這是一個顯示格式問題(將十進制轉換爲字符串時添加了零)。
您需要查看代碼中您看到尾部零的位置。是否在調用.ToString()之後?嘗試使用不同的格式化字符串:
.ToString("#");
.ToString("0.00");
.ToString("#.##");
依此類推。做到這一點的最好方法就是試驗不同的可能值。
decimal m = 0.030000m;
Console.Write(m.ToString("0.##########"));
只要確保你有你想要顯示
decimal value = 0.0030m;
value.ToString(「G29″);
編輯小數位的數量足夠#秒:對於g格式不工作,唯一的問題是,它跳到科學記數法如果原始小數中有太多有效數字。不太理想。
見 「將軍(」 G 「)格式說明」 文件位置:http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#GFormatString
我在吃午飯,所以我做了一個小測試:
decimal d1 = 0.000100m;
decimal d2 = 0.001000000000000000000000m;
decimal d3 = 0.000000000000001000000000m;
Console.WriteLine(Environment.NewLine + "input decimal: 0.000100m");
Console.WriteLine("G " + d1.ToString("G"));
Console.WriteLine("G29 " + d1.ToString("G29"));
Console.WriteLine("0.####### " + d1.ToString("0.#######"));
Console.WriteLine(Environment.NewLine + "input decimal: 0.001000000000000000000000m");
Console.WriteLine("G " + d2.ToString("G"));
Console.WriteLine("G29 " + d2.ToString("G29"));
Console.WriteLine("0.####### " + d2.ToString("0.#######"));
Console.WriteLine(Environment.NewLine + "input decimal: 0.000000000000001000000000m");
Console.WriteLine("G " + d3.ToString("G"));
Console.WriteLine("G29 " + d3.ToString("G29"));
Console.WriteLine("0.####### " + d3.ToString("0.#######"));
輸出:
input decimal: 0.000100m
G 0.000100
G29 0.0001
0.####### 0.0001
input decimal: 0.001000000000000000000000m
G 0.001000000000000000000000
G29 0.001
0.####### 0.001
input decimal: 0.000000000000001000000000m
G 0.000000000000001000000000
G29 1E-15
0.####### 0
我使用以下內容。它確保任何十進制數(最大精度爲29位小數)將顯示所有可用的精度數字,而不會拖尾零,並且不需要您的代碼需要一長串醜陋的散列標記。
if (value is Decimal)
value = ((Decimal)value).ToString("0.".PadRight(29, '#'), culture);
public static string GentlyRemoveEndZeros(string input)
{
// if (input == null) return null;
// if (input == "") return "";
if (input.Contains(".")) return input.TrimEnd('0').TrimEnd('.');
return input;
}
其他不使用「。」的語言環境如何? – 2014-07-11 09:09:05
@MartinMulder同樣的方法:if(input.Contains(「,」))return input.TrimEnd('0')。TrimEnd(','); – VovaM 2016-10-27 04:38:35
@VovaN:的確如此,但是您的答案不能跨文化證明? – 2016-11-03 09:01:08
截斷尾隨零是非常容易,用雙工鑄造解決:
decimal mydecimal = decimal.Parse("1,45000000"); //(I)
decimal truncate = (decimal)(double)mydecimal; //(II)
(I) - >分析十進制值來自任何字符串源。
(二) - >第一:拋出加倍這刪除尾隨零。第二:其他投到小數,因爲不存在從十進制隱式轉換爲雙和反之亦然a)
您將假設所有的值都適合小數點,可以放入雙倍數。這可能會導致OverflowException。你也可能會失去精確性。 – 2014-07-11 09:10:23
你認爲是錯誤的,你的評論沒有增加任何討論。很明顯,這裏所有的都假設該值可以適用於雙精度值和十進制值。這裏,溢出不是問題。 Regards !! – amedriveroperez 2014-07-11 17:14:01
還有誰假設?我搜索了'雙'......沒有其他人假設這一點。 – 2014-07-12 10:13:00
- 1. 從十六進制值
- 2. 十進制值
- 3. 十進制值/ SQL
- 4. 十六進制值
- 5. 雙十進制值
- 6. mysqli從分貝拉十進制值
- 7. 從XML獲取十進制值
- 8. 讀取mp3十進制值
- 9. 解釋十六進制值?
- 10. 存儲十六進制值
- 11. Xamarin.Forms.Color到十六進制值
- 12. 十六進制值在Android
- 13. 驗證十進制值
- 14. 插入十六進制值
- 15. JavaScript十進制值驗證
- 16. 允許十進制值Selection.Find.Font.Position
- 17. 含十進制值的SeekBar
- 18. 循環十進制值
- 19. 防止值十進制數
- 20. XML xs:int十六進制值
- 21. Fomating十進制值JavaScript
- 22. 返回十進制值
- 23. MySQLIMPORT十六進制值
- 24. 不能SELECT十進制值
- 25. 問題在十進制值
- 26. 價值爲十六進制
- 27. XML模式,十進制值
- 28. NSNumber和十進制值
- 29. Qt Json十進制值
- 30. 從六進制十進制值轉換爲字符串
是的,但如果你可能有6位小數或7?你最終會出現一個投機性的醜陋的#字符。 – 2010-01-21 13:47:31
這會將數字舍入到最接近的萬分之一。這可能或不可能是OP想要的。 – 2010-01-21 13:57:33
@ andrew-m是#是一個數字佔位符。在大多數情況下,你知道想要的精度是多少。如果你不想並且想要絕對確定你可以使用你當前使用的數據類型的全部精度。 「小數」可以保存28-29個有效數字。 Hacky解決方案:'.ToString(「0。」。PadRight(29,'#'))' – 2010-01-21 14:47:51