C# Double轉(zhuǎn)化為String時(shí)的保留位數(shù)及格式方式
Double轉(zhuǎn)化為String時(shí)的保留位數(shù)及格式
有時(shí)需要將程序中的數(shù)據(jù)寫(xiě)入到文件中進(jìn)行保存,這時(shí)候就涉及到數(shù)據(jù)的字符串格式問(wèn)題。
下面介紹Double轉(zhuǎn)化為String時(shí)如何設(shè)置保留位數(shù)及格式,示例來(lái)自官方資料,本文用于日后快速查詢(xún)。
double[] numbers= {1054.32179, -195489100.8377, 1.0437E21, -1.0573e-05}; string[] specifiers = { "C", "E", "e", "F", "G", "N", "P", "R", "#,000.000", "0.###E-000", "000,000,000,000.00###" }; foreach (double number in numbers) { Console.WriteLine("Formatting of {0}:", number); foreach (string specifier in specifiers) { Console.WriteLine(" {0,-22} {1}", specifier + ":", number.ToString(specifier)); // Add precision specifiers from 0 to 3. if (specifier.Length == 1 & ! specifier.Equals("R")) { for (int precision = 0; precision <= 3; precision++) { string pSpecifier = String.Format("{0}{1}", specifier, precision); Console.WriteLine(" {0,-22} {1}", pSpecifier + ":", number.ToString(pSpecifier)); } Console.WriteLine(); } } Console.WriteLine(); } // The example displays the following output to the console: // Formatting of 1054.32179: // C: $1,054.32 // C0: $1,054 // C1: $1,054.3 // C2: $1,054.32 // C3: $1,054.322 // // E: 1.054322E+003 // E0: 1E+003 // E1: 1.1E+003 // E2: 1.05E+003 // E3: 1.054E+003 // // e: 1.054322e+003 // e0: 1e+003 // e1: 1.1e+003 // e2: 1.05e+003 // e3: 1.054e+003 // // F: 1054.32 // F0: 1054 // F1: 1054.3 // F2: 1054.32 // F3: 1054.322 // // G: 1054.32179 // G0: 1054.32179 // G1: 1E+03 // G2: 1.1E+03 // G3: 1.05E+03 // // N: 1,054.32 // N0: 1,054 // N1: 1,054.3 // N2: 1,054.32 // N3: 1,054.322 // // P: 105,432.18 % // P0: 105,432 % // P1: 105,432.2 % // P2: 105,432.18 % // P3: 105,432.179 % // // R: 1054.32179 // #,000.000: 1,054.322 // 0.###E-000: 1.054E003 // 000,000,000,000.00###: 000,000,001,054.32179 // // Formatting of -195489100.8377: // C: ($195,489,100.84) // C0: ($195,489,101) // C1: ($195,489,100.8) // C2: ($195,489,100.84) // C3: ($195,489,100.838) // // E: -1.954891E+008 // E0: -2E+008 // E1: -2.0E+008 // E2: -1.95E+008 // E3: -1.955E+008 // // e: -1.954891e+008 // e0: -2e+008 // e1: -2.0e+008 // e2: -1.95e+008 // e3: -1.955e+008 // // F: -195489100.84 // F0: -195489101 // F1: -195489100.8 // F2: -195489100.84 // F3: -195489100.838 // // G: -195489100.8377 // G0: -195489100.8377 // G1: -2E+08 // G2: -2E+08 // G3: -1.95E+08 // // N: -195,489,100.84 // N0: -195,489,101 // N1: -195,489,100.8 // N2: -195,489,100.84 // N3: -195,489,100.838 // // P: -19,548,910,083.77 % // P0: -19,548,910,084 % // P1: -19,548,910,083.8 % // P2: -19,548,910,083.77 % // P3: -19,548,910,083.770 % // // R: -195489100.8377 // #,000.000: -195,489,100.838 // 0.###E-000: -1.955E008 // 000,000,000,000.00###: -000,195,489,100.8377 // // Formatting of 1.0437E+21: // C: $1,043,700,000,000,000,000,000.00 // C0: $1,043,700,000,000,000,000,000 // C1: $1,043,700,000,000,000,000,000.0 // C2: $1,043,700,000,000,000,000,000.00 // C3: $1,043,700,000,000,000,000,000.000 // // E: 1.043700E+021 // E0: 1E+021 // E1: 1.0E+021 // E2: 1.04E+021 // E3: 1.044E+021 // // e: 1.043700e+021 // e0: 1e+021 // e1: 1.0e+021 // e2: 1.04e+021 // e3: 1.044e+021 // // F: 1043700000000000000000.00 // F0: 1043700000000000000000 // F1: 1043700000000000000000.0 // F2: 1043700000000000000000.00 // F3: 1043700000000000000000.000 // // G: 1.0437E+21 // G0: 1.0437E+21 // G1: 1E+21 // G2: 1E+21 // G3: 1.04E+21 // // N: 1,043,700,000,000,000,000,000.00 // N0: 1,043,700,000,000,000,000,000 // N1: 1,043,700,000,000,000,000,000.0 // N2: 1,043,700,000,000,000,000,000.00 // N3: 1,043,700,000,000,000,000,000.000 // // P: 104,370,000,000,000,000,000,000.00 % // P0: 104,370,000,000,000,000,000,000 % // P1: 104,370,000,000,000,000,000,000.0 % // P2: 104,370,000,000,000,000,000,000.00 % // P3: 104,370,000,000,000,000,000,000.000 % // // R: 1.0437E+21 // #,000.000: 1,043,700,000,000,000,000,000.000 // 0.###E-000: 1.044E021 // 000,000,000,000.00###: 1,043,700,000,000,000,000,000.00 // // Formatting of -1.0573E-05: // C: $0.00 // C0: $0 // C1: $0.0 // C2: $0.00 // C3: $0.000 // // E: -1.057300E-005 // E0: -1E-005 // E1: -1.1E-005 // E2: -1.06E-005 // E3: -1.057E-005 // // e: -1.057300e-005 // e0: -1e-005 // e1: -1.1e-005 // e2: -1.06e-005 // e3: -1.057e-005 // // F: 0.00 // F0: 0 // F1: 0.0 // F2: 0.00 // F3: 0.000 // // G: -1.0573E-05 // G0: -1.0573E-05 // G1: -1E-05 // G2: -1.1E-05 // G3: -1.06E-05 // // N: 0.00 // N0: 0 // N1: 0.0 // N2: 0.00 // N3: 0.000 // // P: 0.00 % // P0: 0 % // P1: 0.0 % // P2: 0.00 % // P3: -0.001 % // // R: -1.0573E-05 // #,000.000: 000.000 // 0.###E-000: -1.057E-005 // 000,000,000,000.00###: -000,000,000,000.00001
Double類(lèi)型轉(zhuǎn)String 類(lèi)型出現(xiàn)精度丟失問(wèn)題
C#中Double值用ToString()方法獲取string
若Double數(shù)字位數(shù)超過(guò)16位就會(huì)造成精度缺失
建議用取整和取小數(shù)部分再合并的方式獲取相對(duì)精確的string
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#實(shí)現(xiàn)流程圖設(shè)計(jì)器
這篇文章主要介紹了C#實(shí)現(xiàn)流程圖設(shè)計(jì)器,感興趣的小伙伴們可以參考一下2015-11-11C#使用Twain協(xié)議實(shí)現(xiàn)掃描儀連續(xù)掃描功能
這篇文章主要介紹了C#使用Twain協(xié)議實(shí)現(xiàn)掃描儀連續(xù)掃描,只需一行代碼,就可實(shí)現(xiàn)一次掃描多張,且不需要更改掃描儀的任何設(shè)置,需要的朋友可以參考下2022-01-01C#使用udp如何實(shí)現(xiàn)消息的接收和發(fā)送
這篇文章主要介紹了C#使用udp如何實(shí)現(xiàn)消息的接收和發(fā)送問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Win10下C# DateTime出現(xiàn)星期幾問(wèn)題的解決方法
這篇文章主要介紹了Win10下C# DateTime出現(xiàn)星期幾問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10C#winform中數(shù)據(jù)庫(kù)綁定DataGrid的實(shí)現(xiàn)
本文主要介紹了C#winform中數(shù)據(jù)庫(kù)綁定DataGrid的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05C# 實(shí)現(xiàn)截圖軟件功能實(shí)例代碼
這篇文章主要介紹了C# 實(shí)現(xiàn)截圖軟件功能實(shí)例代碼,需要的朋友可以參考下2017-06-06