去浮点数转字符串如何保留小数点后N位

  介绍

这篇文章主要为大家展示了去浮点数转字符串如何保留小数点后N位,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

最近在项目中碰到很多次浮转字符串,同时要求保留小数点后几位,并且去掉小数点后0的场景

虽然问题很简单,但是隔了挺久没处理这种场景就有些生疏了,自己也搜了一下,很多回答都不太满意。这里贴一下自己的做法,如果有更好的解决办法的话,还请多多指教

//主要逻辑就是先乘,trunc之后再除回去,就达到了保留N位小数的效果
  func FormatFloat (num float64十进制整数)字符串{//默认乘1
  d:=float64 (1)
  如果小数比;0 {//10的N次方
  d=math.Pow10(十进制)
  }//math.trunc作用就是返回浮点数的整数部分//再除回去,小数点后无效的0也就不存在了
  返回strconv.FormatFloat (math.Trunc (num * d)/d & # 39; f # 39;, 1, 64)
  }

其他的一些常用的格式化浮点数的演示

//2代表精度,这种方式会有小数点后无效的0的情况
  strconv.FormatFloat (123.123 & # 39; f # 39; 2, 64)//效果同上
  fmt.Sprintf (“% .2f", 123.123)//g可以去掉小数点后无效的0
  fmt.Sprintf (“% g", 123.00)//效果同上,可以去掉0,但是达不到保留指定位数的效果
  strconv。FormatFloat(& # 39;舌鳎# 39;,1,64)

上面这些例子其实灵活运用一下也可以达到最开始的效果

程序员的天敌产品同学,就像UI妹子的甲方爸爸,总会提些你不想写的需求,还不能动的手,比如某个数值经过,Icirc;, Ograve;及急性;o&微;,Auml;, frac34;, Iacute;, Ecirc;, Ccedil;, Acirc;, Ograve;, Acirc;和爱情;,先保留3位小数,再经过%¥#@%&*%¥#%,再保留2位小数,在经过䅂䌱㈳ꃥꖽ�,取整。。。。。

故,有了下面的n位取整

 func ChangeNumber (f float64, int)字符串{
  护士:=strconv。FormatFloat (f, f # 39; 1 32)
  如果n==" {
  返回"
  }
  如果m祝辞=len (n) {
  返回n
  }。
  newn:=字符串。Split (n,“。”)
  如果len (newn) & lt;2 | | m祝辞=len (newn [1]) {
  返回n
  }
  返回newn [0] +”。“+ newn [1] [m]
  }

为啥返回字符串类型? ?因为浮点数再进行各种各样的计算之后,很可能精度丢失,其中一个方法就是进行一次运算之后转化成字符串类型,然后由字符串类型转化成浮动类型,再进行接下来的运算,稳稳的。

以上就是关于去浮点数转字符串如何保留小数点后N位的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看的到。

去浮点数转字符串如何保留小数点后N位