介绍
这篇文章主要为大家展示了去浮点数转字符串如何保留小数点后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位的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看的到。