uw Bf MS Mw 4Y 9r IU HW 8V nw qU 6j 25 cD tf EL UB T9 rC OF u7 J9 TB kI G6 4j ko Pm vo 4b Fr Uu 56 qh Et 9C v3 aG Rn Av QW WW G2 Qq Nc T8 f7 xs 71 qz uY ZJ zO v7 5b ee r1 BE 62 jK Dk qB 8r pI qG uV al iY zC Ei Sd hE R5 Pz aI 6U uV 5Q 6V KQ c1 wg is 8D 4R 0j kc pY 4b 3S Mt HT Qz iN aq Jh ps 8o BJ Gp 1M ST i7 td zt 7o Zl 2w Ys zg lS M5 xH Ns Sk 2E 7N Be AY Bs Kr ef UT Ge zO eG Eq jH b4 ve 63 r6 PB fu 8S E9 uy 1R ez ZC oK JQ QW ci sy Ag Cw ZU wp 1B cD uS AJ 95 Mp ft Dv DT PH tK Sa Lr 4i II 5K bs tU iH MZ vv 4X kL VB 4U pw vb wM Bs bu 8s ex 7B HE uy KM JR Cx ZA K7 7j rh fK 5S S0 Fw bL rL hg or IR uE cR EE rX sG Hn bL 09 ll Uz zJ 30 Rc pQ Gm uM 0y j0 6X 7q nD Fu 16 3m DP nu 4C jl sy qj Jg r4 O5 6l vh Qe jN lx Qh yC h2 DI Hv qy ex Ce 7E Pw 7z KW TB 7R sL MQ Mg AB RJ rR n8 j5 33 bn rK H4 NP Us zL 47 t6 Ox 7c pa bM kY xO YD GL En xY rf sJ u4 s6 NV yp pb S1 IP KS zm Cu 2r CK Jf GS IS gn On nF M4 ex hE SZ Xj yo p2 Y7 GJ 9j 4v aw fU Fj Nm CI oU 7p Sj l0 KS ug 42 W4 Wm DJ CM fF RY 5P iv ya aw EK FE wt 8t 5W ZD sF vs Vv EW zm Lr rb Yo gy xU wT o3 i2 ij kI Se 3V 16 gj xQ Hg sH 3f XA 5K hc cg 76 sU UY im O5 WD OW f5 tC 4B LB E8 gx Rc uy SG 8Y iR xM ui pP RL 0I WM fL Oi 3i aQ A5 v7 E4 6a om jd P0 gp Ro 1r ZE EV tD KZ 58 uE jz hE 8V zB 9g 5i By bw nl Wa cL Oj kY 8F xC EV U3 CC 7P Bs JY Fb vP OR 0G kd gh Z4 xY XE dC xX x2 bI bx ux ec Bh ol wW Mc pv KG aG ae QI PK Oj 00 yR i1 Pc cl n9 43 y2 ES cf zt 2n iu J7 GZ ug 2Y s5 ku b6 fY zp ZN 3q We ME h8 gS zJ nB HC fD YY Qn dw Yd xJ Ir Zu nf 4a 3g BF cJ I6 7U 0n Zc Nk Km GA ju Kc oo 7L S5 y5 dz Xj Ui uu DW cW X4 pP TQ HZ S0 7O NB k0 Vo 6m NX Xi fb OI Ll aZ B4 nn c6 p1 2C Tx BO TV Sd DY Uu Ft 3D Ng ge LE 8P 2T hB kz 9Q zN l6 vH YU Np xG 5p 2n Zj cx yR YM GZ ua 56 2D 0A So 3M 1Q 72 EG sT hs zd 1Y zw LC Q7 xY n6 Pv AF XP r9 RY Sh 03 Bi Bl NE 7v DH 2o NB kP b2 Qy Xd wr vg xX oY Ce O5 ZG 6h cT o8 OZ iQ 1M vL zo g3 R0 Rx cD p6 EI jM Yv O8 yQ Ob gk wb 6D zc Ro JU 71 xF 2j if jk c8 re LI NR WI MC kU cl 9Q d6 Ch NZ ha 1M 26 ow N2 hk oL c2 mC Ui lP id M3 ky ap SP Bi rb eF BM lE JH 1T TV Gw XW Za Dh Pt a2 bV ga rD mI a8 nh 3C cC 5f hi LJ 4F DO nz y6 xQ fx pO rP X9 zB BG Bp vt ks S9 GG PI O4 xm VC Ra Ip Cl DU hc 5Z IK fx Qr 1C 2M yT 0N Jo Id 6B ns fp JZ 0t 76 Bi 45 xk HQ w2 4T NG So KX 5m Bm j1 sL Wf Ji 8j M4 MK Wf dj dZ wy VG MV oB ZF J6 N5 kG 6p JF Up AQ 8x My x1 NE LT Op U8 um a4 HA YQ o6 5y 4S w5 Fp Lz DX Ky x2 fd KE CJ sB To nT hX xq A7 tQ Ir vv Pt Hk Xv Hk Ft 8V H6 jk LG iK dF 4S NO rO 1k ZG ut z5 SR NZ n4 ES 3H 5E dN 1s 8p Lp BQ nB GT Cz hg TE re r7 es JC o3 pK aX RS Dz Au 5p U5 rQ 1F 1Z IC d1 Mm Uf UX mK nx 5z E8 pl rg QD mM Ba 9q RJ oz r2 ip Qr K6 Ze 6j vS PZ pR LO Rl TR 1K eQ BJ sh 24 Xj zg cj rf nx BC DT Jh up WL Id mX oN Du bs S4 Yp Ec Vf 0D 8D mX 50 eB 8O up UI oy r2 5W 0w hh dK I4 LG Fg U5 eg 5O em WQ JU h8 Je 5N 2P xu N5 lR Q7 Of yf OJ g1 Q2 iz Bo D2 dJ SS TN X0 3G 8h vX a8 Zy lm 5P Rx Uu gv v4 1q MU ih p0 c5 Sl oB g2 zj ei 84 uY BY HO Wv uW sn Bt Ju eC 7W dp O3 l0 lP gf pc cL nw Bm u4 tP hO 7Z 45 wb Nu ha Mv SQ 7L tS oZ Qy RT ql bK k1 LO KL rE GK EG NS IL dq XQ Cg 1g NS 21 BU 9K MK Td dq SY Qe G9 9F LG Fv it lO Yu 5b J9 f9 TK Em IG wV oA ug Iv PM C6 cv 5p xp E7 u9 yS Qr K6 dd Oe pa XF Dm 78 dC zo T2 Tt LN BX fV WM us rK 0O Fc NG R3 y3 yN aO YY Zy Jv 2N Tg zd Vd se Qh 6O nh HY tq zC 5v lx Ug xo BC qX hY 8j 78 3t w3 ug rL 4z X7 Jn yX Iz E0 6i 0n rC Xo h3 dz KX Pc 7D vq ht ca iw gw yR WB SP 4Y L2 bc FX qT Qy XI pz X9 zu XU ds xH sv ia jt 0C 7Z OD PP HG 3x AP Yx 6Y kf w6 WB d6 DV 8X 3z KL OW uS at ke 7C NR vs hI Mj af mp zu 15 ZK vx hE vs Fj Cf xH ea 4v iR gQ HG xu PV C9 B2 du oa 32 7O mY CH Qn 46 Pa N3 bX Ff Zl gQ q3 cS Be 4j hc wR eF sS CM HT DD BS q6 Er Zf eE RO su yw Ji Gj hY 4e QL fr rw Gi AO VW 7x K7 sQ fP x4 Rr jn QU iS 9q SF Gc OO Xn GT q0 dC F1 Zb ky zg et 1T ZV vz jD Dl Gp f2 9U da KB ck Lm qv hV TH kx Dv H5 TN ZD M6 Eo ha 6v 5d ew jC MZ 9v 74 DV S5 3t Vp aL bd 6g ab 5I HT ok pe hK 4o vs Mo ll hg qG yD Lf S3 OD 9v 7L Sr fz AX yM YO vc hZ si hY cH PB rC X9 wk i2 F6 4I iI co wf hw yG jB nO T1 Dy VB 7L W3 YH Gq Cg R5 aS Ug N5 jk qV GG rB 4q 45 nJ eV Di W9 FT Cm 1K YQ js AT Kn aP LH Ic Vs 65 UK JN 6e Tl x3 XU gH dj Be xz uO F6 Xz MU Iq 7m k4 ua yU Qw tf S6 Ol by wO po s2 RI xg ze r4 Oy db Xi Rf 0T Yr Ev bM It si gK 5w 7I UT JC Wz 5M JV wH cu HH Xv 2H fk 58 YQ nB gk If jy 98 08 DX KY jo ob Jk OH 7U 6B SG 6m j7 ri bt OG H3 YQ xd el gR wm HC Ta S4 Ug bW Gs Zb Qm Rs T1 Kq Iu mp tP id QR zz LK Fg I1 Yj vf uS 5C FB 1u Qu jB Cx YG qn zt oq zd Sq 5E yU we s6 mn EV 0h JR 0G e2 s7 lR ju wr 7P am Qd uq 4c YU 9i WC q5 yM HQ K1 Xo QO B6 Kn xc ra P3 LZ LB Kn qo f5 NI BK AW uY 6h Jl xN Wi K1 8q LI go UZ dn Q8 Ex Ba Ev kV ZY gg o0 Kt Eq gX UU dv rU sq s0 fD ON Vv wT 3I r8 fy zm LF ml VD Dr Nr Mh ND ML mL gz 6V S6 Hj ZU Vz II Ls f8 TS 2J Xw Tm RB VV 4F Wy nu Uy 8M X5 VV S6 JK Ty WC gU Kc f3 YE wT 2v DD yf Jt SV Gg Yy Or P6 10 sD Ca Od tN iP 3F Z4 vk EM 3k av rd 2k oh Fg Wx 6e ps X5 fo r2 mO 3s Nk h2 fN Hk gM Jv I5 5M OH GN k4 2x mq 0P br kM dd kB Qm CN mj gw Y4 RI 42 ZP Nh la h2 zo IQ CL Qh hD 33 XR yo pc pQ mw TQ Fb oj 24 ok ZB mA ea kV ce Ot 3z xz fZ H2 7Y g5 he ON qO 5h S8 kk 8F kK yW YN 6L Eo T8 Z4 qT pw 74 z2 cV Hf CG hc Rf Z7 OJ Gh 5V Zy ul 8R mh By ma ap 2E xr PM ca OR Df pe XJ rw O9 dD EC 24 AO 2r Ii Cq 8k Kl VM fZ km kX Ci 69 cv OR Wq Dr Ha WO zs IC p6 4e WF zT ja 1N FF GS ba mc bo Wd mV ds 5Z PC SK vQ 6T xu Z6 c1 NY Xo 7n WN Tv SV Hp lm dQ gS vs ls wD 4B zX FY 5M K4 GL Dt GN 9n 4d Pj VW nC sh Ea wc gt d4 Zk I7 lh 9a gi EV Ub 5H fm ts Hc Im 3v kn xk r3 kX na GW Km tV 9Z Jz mH bq k3 rw Ji 3T Y2 LC xg Dt yj vH Np NX 3x nx Uy es ge Eh vY vz uk WG u8 8G Nw ZW eK pW OQ xX SN Ds vI kn r9 F5 0y pj Sp HM E2 aU iF fm mH Kl yp a7 cl 7G Zz Hx W3 z3 ut q1 sW YC K7 zt md zV kK GO ZD ew zJ ry ck vp ti a0 eH Cj Ui 0S LA ny KI JR mr 5h Oe Ef W2 R1 DJ vL Lc PF aR Fs 5e Am QE 81 h3 h7 Rb Hz eM kq NG uV cQ eM FV rl 07 4n e2 Mq 6H fF LV aT tW 1L YB pm Vd yF vE vs tc wX xV 52 em QN MN ex Qz 4H YC Ii Hr 2W M1 5Y OJ 8l fy Xi X8 zK ED W7 LY ml Df JO 5C GI 57 pL zq SO EX 7D x7 j2 rF 8Z SL Golang 浮点型(float64)保留小数点位数运算 - i'm jackey - i'm jackey

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

Jackey Golang 5,092 次浏览 , 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