在C#中将字符串格式化为字符串
发布时间:2020-12-15 06:46:10 所属栏目:百科 来源:网络整理
导读:我有一个双倍,可以从0.000001到1,000,000.000的价值 我希望将此数字格式化为字符串,但有条件地取决于其大小.所以如果它很小,我想用以下格式进行格式化: String.Format("{0:.000000000}",number); 如果它不是那么小,说0.001,那么我想使用类似的东西 String.F
我有一个双倍,可以从0.000001到1,000,000.000的价值
我希望将此数字格式化为字符串,但有条件地取决于其大小.所以如果它很小,我想用以下格式进行格式化: String.Format("{0:.000000000}",number); 如果它不是那么小,说0.001,那么我想使用类似的东西 String.Format("{0:.00000}",number); 如果结束了,说1000,然后将其格式化为: String.Format("{0:.0}",number); 根据我要格式化的值的大小,是否有一个聪明的方法来构造此格式字符串? 解决方法
使用Math.Log10的double的绝对值来计算出你需要的零(如果为正)或右(如果为负)小数位.根据此值选择格式字符串.您将需要单独处理零值.
string s; double epislon = 0.0000001; // or however near zero you want to consider as zero if (Math.Abs(value) < epislon) { int digits = Math.Log10( Math.Abs( value )); // if (digits >= 0) ++digits; // if you care about the exact number if (digits < -5) { s = string.Format( "{0:0.000000000}",value ); } else if (digits < 0) { s = string.Format( "{0:0.00000})",value ); } else { s = string.Format( "{0:#,###,##0.000}",value ); } } else { s = "0"; } 或者根据数位数动态构建它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |