1 #Region "Microsoft.VisualBasic::0d898980449d57303d7415a954794fb6, Microsoft.VisualBasic.Core\Extensions\StringHelpers\NumericFormatHelper.vb"
2
3     ' Author:
4     
5     '       asuka (amethyst.asuka@gcmodeller.org)
6     '       xie (genetics@smrucc.org)
7     '       xieguigang (xie.guigang@live.com)
8     
9     ' Copyright (c) 2018 GPL3 Licensed
10     
11     
12     ' GNU GENERAL PUBLIC LICENSE (GPL3)
13     
14     
15     ' This program is free software: you can redistribute it and/or modify
16     ' it under the terms of the GNU General Public License as published by
17     ' the Free Software Foundation, either version 3 of the License, or
18     ' (at your option) any later version.
19     
20     ' This program is distributed in the hope that it will be useful,
21     ' but WITHOUT ANY WARRANTY; without even the implied warranty of
22     ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23     ' GNU General Public License for more details.
24     
25     ' You should have received a copy of the GNU General Public License
26     ' along with this program. If not, see <http://www.gnu.org/licenses/>.
27
28
29
30     ' /********************************************************************************/
31
32     ' Summaries:
33
34     Module NumericFormatHelper
35     
36     '     Function: [Decimal], Float, SafeToString, SafeToStrings
37     
38     ' /********************************************************************************/
39
40 #End Region
41
42 Imports System.Runtime.CompilerServices
43
44 ''' <summary>
45 ''' ###### ``C``货币
46 '''
47 ''' ```vbnet
48 ''' 2.5.ToString("C")
49 ''' ' ¥2.50
50 ''' ```
51 '''
52 ''' ###### ``D``十进制数
53 '''
54 ''' ```vbnet
55 ''' 25.ToString("D5")
56 ''' ' 00025
57 ''' ```
58 ''' 
59 ''' ###### ``E``科学型
60 '''
61 ''' ```vbnet
62 ''' 25000.ToString("E")
63 ''' ' 2.500000E+005
64 ''' ```
65 ''' 
66 ''' ###### ``F``固定点
67 '''
68 ''' ```vbnet
69 ''' 25.ToString("F2")
70 ''' ' 25.00
71 ''' ```
72 ''' 
73 ''' ###### ``G``常规
74 '''
75 ''' ```vbnet
76 ''' 2.5.ToString("G")
77 ''' ' 2.5
78 ''' ```
79 '''
80 ''' ###### ``N``数字
81 '''
82 ''' ```vbnet
83 ''' 2500000.ToString("N")
84 ''' ' 2,500,000.00
85 ''' ```
86 ''' 
87 ''' ###### ``X``十六进制
88 '''
89 ''' ```vbnet
90 ''' 255.ToString("X")
91 ''' ' FF
92 ''' ```
93 ''' </summary>
94 Public Module NumericFormatHelper
95
96     ''' <summary>
97     ''' ``D&lt;n>``
98     ''' </summary>
99     ''' <param name="n%"></param>
100     ''' <returns></returns>
101     Public Function [Decimal](n%) As String
102         Return "D" & n
103     End Function
104
105     ''' <summary>
106     ''' ``F&lt;n>``
107     ''' </summary>
108     ''' <param name="n%"></param>
109     ''' <returns></returns>
110     Public Function Float(n%) As String
111         Return "F" & n
112     End Function
113
114     ''' <summary>
115     ''' 
116     ''' </summary>
117     ''' <param name="x#"></param>
118     ''' <param name="NaN_imaginary$">Default using R language style default numeric value</param>
119     ''' <returns></returns>
120     <Extension>
121     Public Function SafeToString(x#, Optional NaN_imaginary$ = "NA"As String
122         If x.IsNaNImaginary Then
123             Return NaN_imaginary
124         Else
125             Return CStr(x)
126         End If
127     End Function
128
129     <Extension>
130     Public Function SafeToStrings(v As IEnumerable(Of Double), Optional NaN_imaginary$ = "NA"As String()
131         Return v _
132             .Select(Function(x) x.SafeToString(NaN_imaginary)) _
133             .ToArray
134     End Function
135 End Module