在C#中将字符串格式化为字符串

前端之家收集整理的这篇文章主要介绍了在C#中将字符串格式化为字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个双倍,可以从0.000001到1,000,000.000的价值

我希望将此数字格式化为字符串,但有条件地取决于其大小.所以如果它很小,我想用以下格式进行格式化:

  1. String.Format("{0:.000000000}",number);

如果它不是那么小,说0.001,那么我想使用类似的东西

  1. String.Format("{0:.00000}",number);

如果结束了,说1000,然后将其格式化为:

  1. String.Format("{0:.0}",number);

根据我要格式化的值的大小,是否有一个聪明的方法来构造此格式字符串?

解决方法

使用Math.Log10的double的绝对值来计算出你需要的零(如果为正)或右(如果为负)小数位.根据此值选择格式字符串.您将需要单独处理零值.
  1. string s;
  2. double epislon = 0.0000001; // or however near zero you want to consider as zero
  3. if (Math.Abs(value) < epislon) {
  4. int digits = Math.Log10( Math.Abs( value ));
  5. // if (digits >= 0) ++digits; // if you care about the exact number
  6. if (digits < -5) {
  7. s = string.Format( "{0:0.000000000}",value );
  8. }
  9. else if (digits < 0) {
  10. s = string.Format( "{0:0.00000})",value );
  11. }
  12. else {
  13. s = string.Format( "{0:#,###,##0.000}",value );
  14. }
  15. }
  16. else {
  17. s = "0";
  18. }

或者根据数位数动态构建它.

猜你在找的C#相关文章