背景:
产品经理:价格要保留小数点两位 9.99/元,能办到嘛
👌,小事情儿,分分钟搞定 :小猿
。。。。。。。。。。。。。。。过了1分钟。。。。。。。。。。。。。。。。。。。
@产品经理,可以了 看下 :小猿
产品经理:好的,优秀的你👍
。。。。。。。。。。。。。。。。过了一个小时。。。。。。。。。。。。。。。。。。
产品经理:@小猿,能不能把9.00 后面的.00 去掉,9.99展示小数点后两位
认真的嘛?:小猿
产品经理:你看,我像和你玩儿的嘛,赶紧的、麻溜儿的
---------- :小猿
宗旨:满足产品经理的一切不切实际的幻想
解决:
方案一:转化为string类型,截取判断
- func Float64PrecisionZeroString(n float64) string {
- // 1、float64 转字符串
- s := strconv.FormatFloat(n, 'f', 2, 64)
- // 2、计算小数点后两位的起始值
- l := len(s) - 2
- // 3、截取字符串
- v := s[l:]
-
-
- // 4、判断是否为 00,非则直接返回:输入值
- if v != "00" {
- return s
- }
- // 5、截取字符串 l -1 s是把 小数点截取丢弃: 9.01
- str := s[:l-1]
-
- return str
- }
输出 float64
- func Float64PrecisionZero(n float64) float64 {
- s := Float64PrecisionZeroString(n)
- num, err := strconv.ParseFloat(s, 64)
- if err != nil {
- return n
- }
-
- return num
- }
我为人人,人人为我,美美与共,天下大同。