簡體   English   中英

C# double.ToString() 最大位數和尾隨零

[英]C# double.ToString() max number of digits and trailing zeros

如何將double精度數轉換為最大位數為 6 的string並刪除尾隨零?

我希望有 :

2.123456123 -> "2.123456"
0.0000012 -> "0.000001"   (and not "1.2e-6")
12.45 -> "12.45"   (and not "12.450000")
36 -> "36"   (and not "36.000000")

使用string.Format("{0:F6"}, value)輸出尾隨零和string.Format("{0:G6"}, value)將不適合第二個示例。

可以使用value.ToString("0.######)嗎?

有沒有等效的方法來處理string.Format()

正常使用value.ToString("0.######") 但是,您應該考慮另一件事: double不是十進制(基數為 10)的數字。 您不應該依賴數字的十進制表示是否合理 - 大量正常的十進制以 10 為基數的數字需要以 2 為基數進行無限十進制擴展。

如果您確實關心十進制表示,那么改用decimal可能是一個更好的主意 - 它也是一個浮點數,但以 10 為基數。

在任何一種情況下,這都涉及四舍五入——這可能是也可能不是你想要的。

令牌是具有價格字符串屬性的 ViewModel:

foreach (var item in tokens)
{
  item.Price = double.Parse(item.Price).ToString("#,0");
}

// 123456 => 123,456

暫無
暫無

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

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