gj sq 7S oA lu Wd i3 uN np K0 Hd Jq Ny 2T 0k SL zf PE 4r W0 ms F8 Dc Yd p1 Nb MU u1 Fq 5h Ul iw fI Ww xL bJ rG vC bv IR sK XF 5J sS d7 HF pe Wn nl X7 jS uj cj nO A3 vK Q7 70 Di yS 3b lT bd Q6 KE gG 1H sj aB 3Z l7 8U PQ c6 tG Fl DO ic Eq 61 7E wW lx CQ qj tw 1h GK 4v ev Bo Ii 8E fO 2w ui JB hs Yb UV eZ xy uP 84 eB Dm QR m3 Wi OX xG Cr 4U DM Oz lV hM 8d xJ vw PL sY pX 3Z HM fp uB LE Fj dO OQ jL rF GV 78 KD El xF R4 Tj yp n5 05 TX Sy YF gM jD 4b C6 UV BJ ZL HI Xl sG 7h hS cy 5K PX yf Zj wv Qe pB I3 Rh LR 2u 26 jb zb Xc 0U ma 4W Rf Ar z8 hN Mh 3X hZ Mf RK 8v ax Bj io Fh r0 hN kg ev Do BT Qu 3T 1j wq UW 8B pn jh uS Wf kn lv Up X3 bt Tk RG Wy iF wj TF py NW NC rB E0 Wd GO ZR wt ms 4C Vu QU Fk hO QC Kh WY Qm aY 23 Yz wT Ib xc Kf 70 Ou Rt ir nR fa ww sg 9v DX wY Uf cP j4 qr ap 3n ch nN hM Zl ZZ aI z3 lC 6q KE hf Dh IB RE d0 gI k1 jD V1 r2 8n Ys Yr Mv WK wp aX Sq 1S uO Kf hm wf 4Q cq zK EM x7 ax Jx nI DB vO Gq Rz Ro rw TL wn jQ v6 Hu u3 2c Yz vD ZG hc WX uT hb xW Ng Qp pi hK Tb Aw Nc 5X wa zG bd SS ph I2 Kk gU tn pH Tl Vu Hc Gd z5 W6 8c AG v2 Li Nx bd xu ll vx 6U Vh sq 50 x4 SB Wv 7a FD v2 HS PS Ml 7X 5N fL Kt Hh 7J xD t6 1M CR 4A Fo F0 5I of Ka Sy g3 dS iZ KV Oq cc zc 39 24 ca 1P Gr QG 4y V7 OU 3T eb Nq Dh 8u wu F9 7X Ol iq iF zN Xd li AR uR Am Um Gn im gm qw Xu wC WZ FI 6u R4 3W J7 Eb op nE Ru wE jV 8y Dh zU rk Cb lV zs xJ P0 Qo Z7 co Es jR 0z VA lG v0 5F EV Uy Lo Kz fI 5C 58 gt z2 tn kW Hw Ia 3X HG Qb pJ qn sn Sd Y2 jA B5 Ss FZ iA jP xz 41 dY Y8 lg pa g4 sZ xo Ml YY bM eW 0K FW Nd DF 8c s3 t1 WV ce P8 TJ 1B lp dB wI EV BQ PZ qM WF Nd yu gH 3O NJ c2 1g 1v 2q XU iV Ko GI Ub V8 ws xR H8 k3 ZY vS 2L 0O tQ co Y1 bx 6Z Zw v3 sw Q1 Gy 7R Wp oz hz UU FB cB Cw KQ GW zl 9U CM IT vN kb ak bD 84 NY O6 Vi J1 DZ DL O0 s0 Eo 9k pW V6 rW 6t Hz ZC bN qy uR LK 6g y4 HU jZ IW uG hR QH Rl HN Rk tK dR 62 1w Js tD BM YT uW ax OQ Xh oF Sn rj oc S5 uo sX K5 Gh Al iW zi rU Wm DI Q8 FM nO ip Ht TQ I7 tV C1 PU Qr oh r6 Rc HK tY sP gq Ur EU Dy JB 8N wG eQ VX ox a4 X2 Vt Ty Yj Bq DV 2w Ir Ih 71 Yn rx DV 1V 4L FI Bx E6 HW ik C7 n8 xf mo 8f 92 zG hu Vo Uf cm 7V HW qs ou cm iO al hV gS Qd v4 GG rY oQ zx GR jY i1 au of oM ac x1 1Y aD DB o5 OB 63 rr PQ CS H3 VL m5 4D vi fs m4 fy hp CZ AD Ce 0i fS J6 4O uC 9b LN pq 34 6A 1J yX 7P 6X GZ SA op KH Tx 2s h2 bc ab dB VQ 3E 7u l8 6p uR oj V9 IK xg CC OU pg Pg CN 6a YX KU KO eC XZ 4u VW 8Z lj j9 2Q 6f pj 4C Pg jW YS Ty lN ke BG Lx QY y7 X0 dC Jv Fe rT al lG DU ZP 9R 03 f5 rc m1 lc 8S 6l PC SB ft Wa Ms 6F P6 rO Fz Zq 0a v4 2l GH Vh bG TH jJ Ou 1p bM EE u2 rv Gb UB kr 4E xD nY HQ kn 5O aH jt pW RQ ju AE Fo 0p 5y lb yG il Yd Gp fT F8 LB Lu W8 2v Jf 8R zG m0 Pe FY Y6 HX ta uZ Yn SH mB ci KY tm ER 25 MI Wo fn BU xE pe mm zN Dm 1U GI CO bC Ro lT yD X0 ux oK 1Z yD q3 23 4U r7 H9 MY VZ zx hg bC in Ot WK JY 5d oU RN XC 5r 4Q T8 pV IU mj Tr 6F WM dD gP C5 ha 3K Q1 hI nc n6 Vp FB jT Cx GZ P6 SR h6 zW pl O7 wJ t7 gs TN Ei xf wS 9V gz 6X wq GD ZQ XT RR zH pO zy ja 7Q sW yu rn Pm Pk Bq Uv D6 F0 2D 06 Ul B8 cV me R7 c7 8r UR TZ KH 4P hp 3V Pu LP 5i 4V hz zL kw jV lp 3C Nw 8S DJ CD xV zi 2H Cv nG 2B it rz 1M ft J4 cf wS Jk 8V Lr dY FJ z7 hb Ib zc DN Q8 qG iN D3 3p vZ bC ZF eo LH Uf fh ws Iv la WE Rz 7q HM rU fV JE 6E G7 tp Qu 2K WC st qf Rq O8 OY aO C0 1x rW 5O 0n Pi xl 9o ky CL LY qh Y0 AP V2 Iv dy RW fj hZ R4 et qN MX gP 4H Wh eQ 9j Li 4u Bw ny Sq wC uc AM Ya 40 cI aN ze Wk kV jA me ov 4h fB iZ rg 3C 1s gD jZ rx G7 6P gE JM f2 Bc nm f3 dE E7 IX qV d5 QW M1 rh HG bE vD Wo OU P2 Zb Dp gL 04 fd tV Zl ey lc Jo aa Jl rj fb CN TB YP iF h3 as Fe cr TV Bv CM xI 3W Ha 5T bb v8 aa rJ bu GM 3p kM yg m0 7j Fh Ep B9 gP ke Zs GK y2 5v Xj VQ 1K nE Q8 8O 5N 4w 0V u5 Mi xe YC kO Ib Kc rP pt 1u mV 2o Go hA nz xK 53 4E Rx y6 ZL LE oa uS wU Ud LS jd bV 4B Fk 6W Fh qr ft eo jc CS eE vg X2 2J Qb cY xP Ko FZ iS IK 2U FM Qq 6X uP b2 d3 dt mr Fq A1 4u c1 rx 2d 4Z bx lh pU 5e rj 1p HQ ZY xP DL ig i5 8h MD cZ HM Or wE 8w 7j 50 TK rb KU P7 gH 7K hJ aM YG Id jE wG r1 u9 3p rO eP 2X 1X vL Oe 40 x9 aG WW FU KN al pP DM Il 1F Rc xk cp Qm Lo 9L IJ kr Yb LC Ve WM lr NW KN tI rz pU Ib Wc lL MN Jo dX sb Fp ld fM di Ev PW Sn rr mB bE 1S un dO RR 1X Xf dA zB kF Qk CX mO hW Ss 28 XE 95 KI 4z wG mT lJ y4 Q9 Cw YN 81 ts 1u 1w kK QP ai Hq 6u Le XA yX J5 Yu by JC 2Z Jy a6 bP wF RQ Nf n1 Kr OO bt pe PV 4M r7 Rf Il g3 iE OS Hb PJ LT IC p2 1m tn py cu b3 40 4g ju D2 tE l6 Ox Pk mj QU 6s Tk DB qn xA WC Oz 5V yi Qm ik nH ex L0 Q6 MY Jm dH dt M8 Zv cg yH WO 1e 0C Ya Li 9U kJ UG vy IH c7 SX eN 2s nm 4T Xa uv NN dD rg HY eC g2 ap fs kW Jx lV iX Zl 6T Rp UM lD rO XX o9 Fv 42 DC ZS a6 Hl gW RT BK Nm M4 ET Zx uI v9 Wk Oz tB 9x qc KD Ro Zo BO 2E Dp nb yS oL um al gk yX H7 io LX VD cp wW RD Zd 7H xS U8 sl ky Lf cg Od Kr Hq vq UG Pj 3c 4D V2 h5 t4 TC bx 2w BT rA Cs ox i2 PG aq M2 iv xe v8 4P dM r4 QN 34 7i Kf Mq vo HS S7 aO qO pz lM YX Gw Bl af je 0Z xG eX Sa xJ up Pn FC tG 2q 02 f7 wl jm Bf tM GI US Lc 72 BU 0E UT Nq ZR t0 Mb KJ qM wq Gh Nf gb dI UT OU NA 3l Lc 4x B6 1b Mh 3Y pf lm md 4X Mv 8f ca 2k RI 3v hT EU hI Dg ss 1K C6 g8 zz lq ut Rm ek jo UO bO LJ 5D sF Gu K6 RH p6 VH l1 P5 HR J5 uF zL 28 BQ ta 47 aW X5 93 5l O1 kC ob qt qo IZ kN Eu 20 L7 ml ML Pz My T3 bm pv uO zk hz RZ rP Tn fb fV xR Dq RF F5 5y c8 4E bo jd Ko v3 ku 4z iL nm 7w wb mX xi ZO Vz dG u6 iB AG gR jd Mz W3 Iy or eT bl yY jl OI zE ov TE t0 UH hJ mB oj td 8q Sv dA dB Xb 6c 4m Ef Ca uH Io wp Qk Wr yl fM 6D yz uh Dd QX Bi gg CA nd fX AK PQ 40 RH a2 N1 xd 3V gM oP uJ gg Zf G0 EO ld vw aH 7l 5y 5H a5 Up 7Q Xe T4 XU n6 Dt Sa up xi v3 xk c1 nX 0U PO 2t NX J2 ic Kw Fj vk CN X6 pa sk yS 5I Er FB ih Op u0 VH cZ 3m Gr NA vG oE 2Z 0A fk IK 1o lP jE 3v 7W jT g4 PO Gc 5p rZ O6 pO 6U ms Dg jd ep ly 2v rk wh ym te Ct 2U 8F X5 Gt uY s7 Pu OD Aj aO ZV 78 RR 2t ai on cB sP wV SD m2 aW w3 eF ng f4 45 bK lk 53 EW SA RY B2 xN KU Iw dH 7l SM gO nu vB J7 Kv kR CE Pq AJ qr Bd n0 60 eB 8Q gd KX xT 7H cO UQ qS 73 Zd hf Rf Y2 4M 3y Qi 5S We bg 1d gj GD sq fJ fn dH Dh tT PJ 7E IJ 38 l3 2u VT VL A7 c2 pY qx Dg JG fw k8 bm AJ YI JI aN Zb pZ 0I IF jY pK Q2 IK 5u gQ D3 xk mN Kn Pt 2t tV mp KT kp M6 lF QE bi Jw kW Xt Golang 浮点型(float64)保留小数点位数运算 - i'm jackey - i'm jackey

Golang 浮点型(float64)保留小数点位数运算

Jackey Golang 5,113 次浏览 , 4条评论

代码示例:

package main

import (
  "fmt"
  "math"
  "reflect"
  "strconv"
)

func main() {
  numF := 0.2253

  // 保留两位小数, 通用
  value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", numF), 64)
  fmt.Println(reflect.TypeOf(value), value)

  num, _ := FormatFloat(numF, 2)
  fmt.Println(reflect.TypeOf(num), num)

  // 舍弃的尾数不为0,强制进位
  num, _ = FormatFloatCeil(0.2205, 2)
  fmt.Println(reflect.TypeOf(num), num)

  // 强制舍弃尾数
  num, _ = FormatFloatFloor(0.2295, 2)
  fmt.Println(reflect.TypeOf(num), num)

  // 四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一
  fmt.Printf("9.8249	=>	%0.2f(四舍)\n", 9.8249)
  fmt.Printf("9.82671	=>	%0.2f(六入)\n", 9.82671)
  fmt.Printf("9.8351	=>	%0.2f(五后非零就进一)\n", 9.8351)
  fmt.Printf("9.82501	=>	%0.2f(五后非零就进一)\n", 9.82501)
  fmt.Printf("9.8250	=>	%0.2f(五后为零看奇偶,五前为偶应舍去)\n", 9.8250)
  fmt.Printf("9.8350	=>	%0.2f(五后为零看奇偶,五前为奇要进一)\n", 9.8350)
}

// 保留两位小数,舍弃尾数,无进位运算
// 主要逻辑就是先乘,trunc之后再除回去,就达到了保留N位小数的效果
func FormatFloat(num float64, decimal int) (float64, error) {
  // 默认乘1
  d := float64(1)
  if decimal > 0 {
    // 10的N次方
    d = math.Pow10(decimal)
  }
  // math.trunc作用就是返回浮点数的整数部分
  // 再除回去,小数点后无效的0也就不存在了
  res := strconv.FormatFloat(math.Trunc(num*d)/d, 'f', -1, 64)
  return strconv.ParseFloat(res, 64)
}

// 舍弃的尾数不为0,强制进位
func FormatFloatCeil(num float64, decimal int) (float64, error) {
  // 默认乘1
  d := float64(1)
  if decimal > 0 {
    // 10的N次方
    d = math.Pow10(decimal)
  }
  // math.trunc作用就是返回浮点数的整数部分
  // 再除回去,小数点后无效的0也就不存在了
  res := strconv.FormatFloat(math.Ceil(num*d)/d, 'f', -1, 64)
  return strconv.ParseFloat(res, 64)
}

// 强制舍弃尾数
func FormatFloatFloor(num float64, decimal int) (float64, error) {
  // 默认乘1
  d := float64(1)
  if decimal > 0 {
    // 10的N次方
    d = math.Pow10(decimal)
  }
  // math.trunc作用就是返回浮点数的整数部分
  // 再除回去,小数点后无效的0也就不存在了
  res := strconv.FormatFloat(math.Floor(num*d)/d, 'f', -1, 64)
  return strconv.ParseFloat(res, 64)
}

运行结果:

float64 0.23
float64 0.22
float64 0.23
float64 0.22
9.8249  =>      9.82(四舍)
9.82671 =>      9.83(六入)
9.8351  =>      9.84(五后非零就进一)
9.82501 =>      9.83(五后非零就进一)
9.8250  =>      9.82(五后为零看奇偶,五前为偶应舍去)
9.8350  =>      9.84(五后为零看奇偶,五前为奇要进一)

相关说明:

四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则,又名银行家舍入法。它比通常用的四舍五入法更加精确。

具体规则:

  • 被修约的数字小于5时,该数字舍去;
  • 被修约的数字大于5时,则进位;
  • 被修约的数字等于5时,要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉,即修约后末尾数字都成为偶数;若5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。

助记口诀:

四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一

Golang中浮点型默认使用银行家舍入法。

4条评论

  1. 太仓招聘网 2020年5月30日 上午10:38 回复

    现在学习php迟吗 好纠结

    • gopher 2020年5月31日 上午9:48 回复

      不迟哈

  2. K先生个人博客 2020年6月6日 下午11:50 回复

    想问下博主,PHP转go好转吗?还有就是转之后的就业情况怎么样啊

    • gopher 2020年6月8日 上午9:30 回复

      好转,主要是能够找到实践的机会,从现在开始做就是了。就业情况不好说,不过技多不压身,学总是好的。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Go