我不知道一個簡單的方法來做到這一點,你正在尋找。
但作爲一個奇怪的人,我確實想知道如何才能使用字符串方法來實現。
要清楚的是,我並不是主張這種方法是一個很好的解決方案 - 它很難在一行中理解,但嘿,這對我來說是一個有趣的練習。
如果你覺得做一個可怕線(C#):
var num1 = 123123123.456456456; // result: 123,123,123.4564565
//var num1 = 123123123456456456.78; // result: 1.231231234564565E+17
//var num1 = 123123123456; // result: 1,231,231,234,564,564
//var num1 = 1231231; // result: 1,231,231
Console.WriteLine(long.Parse((num1.ToString("G16") + ".").Substring(0, (num1.ToString("G16") + ".").IndexOf('.'))).ToString("N0") + (num1.ToString("G16") + ".").Substring((num1.ToString("G16") + ".").IndexOf('.'), (num1.ToString("G16") + ".").LastIndexOf('.')- (num1.ToString("G16") + ".").IndexOf('.')));
否則破了一點;這是一個更清晰一點要帶什麼辦法我:
var num1 = 123123123.456456456;
var num1a = num1.ToString("G16") + ".";
Console.WriteLine(long.Parse(num1a.Substring(0, num1a.IndexOf('.'))).ToString("N0") + num1a.Substring(num1a.IndexOf('.'), num1a.LastIndexOf('.')- num1a.IndexOf('.')));
我加入一個小數點的字符串的結束,以便有在數(串)至少一個小數點。然後抓取第一個小數點左側的文本,並將其與第一個和最後一個小數點左邊的任何文本連接起來。
如果在原始字符串中沒有小數點,那麼這兩個點是相同的 - 子字符串0個字符長 - 刪除添加的小數點。
你應該給出例子。例如,你可以給第二個項目符號中的方法不輸出所需字符串的數字嗎?什麼是實際的字符串,你想要什麼? –
@JeppeStigNielsen,更新了這個問題。 –
[我已經告訴過你該怎麼做](http://stackoverflow.com/q/40953111/17034)。使用Math.Log10(Math.Abs(value))知道何時需要切換到「E」格式。 –