c# – 用数字分组格式化十进制数并限制位数
基本上我正在尝试以与
Windows计算器完全相同的方式执行数字格式化.因此,我的要求是:
>将显示数字的数量限制为最大值(例如16).我能够使用number.ToString(“G16”)来完成. 任何关于如何将这些组合在一起的想法得到与Windows计算器相同的行为? 一些具有所需输出的示例: 我在下面添加了一个答案,如果使用一个字符串格式化无法实现所需的输出,我将使用它.如果您认为没有直接的方式实现这一点(这是我的原始要求),请随时建议对该答案进行任何优化/更改 对不起,如果我对任何人造成某种混乱.我只是想,可能有一个简单的一个字符串格式来实现这一点,而且我仍然很想知道这是否是真的. 解决方法
经过很多关于这个问题的搜索.您不能使用单一格式执行此操作,因为您询问IF .. ELSE LOGIC不是单向格式化(对数字执行两种格式化)
IF d.ToString("G16") contains scientific notation ... do something ELSE ... group digits 所以你必须使用IF来实现这一点 Str = If( num.ToString("G15").Contains("e"),num.ToString("G15"),num.ToString(String.Format("#,0.{0};-#,0.{0}",New String("#"c,15)))) UPDATE1 根据您的更新使用以下 Public Function FormatDouble(ByVal dbl As Double,ByVal len As Integer) As String Return Double.Parse(dbl.ToString("G" & len)).ToString("#,#.#".PadRight(len,"#"),System.Globalization.CultureInfo.InvariantCulture) End Function > dbl.ToString(“G”&len)将dbl格式化为固定长度= len 注意 当提供长度(“G15”)时,它会绕它的数字.它可能会减小小数部分的长度,但不能从整数转换到指定长度.即1734.Tostring(“G1”)将返回2000而不是2 / 1734.Tostring(“G2”)将返回1700而不是17 如果你想减少数字,你必须使用字符串函数,如Substring和Left后Tostring(“G1”) 希望有帮助 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |