COCO研究院

 找回密碼
 註冊
搜索
查看: 2663|回復: 6

請問如何在小數點後第3個進行四捨五入?

[複製鏈接]
發表於 15-3-4 09:59 | 顯示全部樓層 |閱讀模式
例如: 1.2345 -> 1.235
Prec(1.2345, 3), 只能做 1.234...T_T
發表於 15-3-4 20:07 | 顯示全部樓層
A = Prec(1.2345, 3)
B = Prec(1.2345, 4)
if (B - A) >= 0.0005 then A = A + 0.001

我不懂 AmiBroker, 純粹亂掰, 若有錯誤, 請一笑置之
發表於 15-3-4 20:24 | 顯示全部樓層
So what's the problem?

  1. function cRound( value, decplaces )
  2. {
  3.     exponential = exp( log( 10 ) * decplaces );
  4.     rounded = int( value * exponential + 0.5 ) / exponential;
  5.     return rounded;
  6. }

  7. function cPrec( value, decplaces )
  8. {
  9.     return Prec( value + 5*10^-(decplaces+1), decplaces );
  10. }

  11. printf( "round1: %g", cRound( 1.2345, 3 ) );
  12. printf( "\nround2: %g", cPrec( 1.2345, 3 ) );
複製代碼


 樓主| 發表於 15-3-5 09:03 | 顯示全部樓層
joshsmi 發表於 15-3-4 20:24
So what's the problem?

joshsmi大大, 謝謝您啊, 正是想要的效果,
發表於 15-3-5 11:41 | 顯示全部樓層
不用這麼麻煩吧,把欲四捨五入的值加上0.0005 強迫進位,再捨掉四位後的小數即可。
A=1.2345
Prec(A+0.0005, 3)
就好了。
 樓主| 發表於 15-3-5 17:53 | 顯示全部樓層
wldtw2008 發表於 15-3-5 11:41
不用這麼麻煩吧,把欲四捨五入的值加上0.0005 強迫進位,再捨掉四位後的小數即可。
A=1.2345
Prec(A+0.0005 ...

嗯, 剛測試這方式, 亦是可產生四捨五入的效果.  謝謝大大~
發表於 15-3-5 18:07 | 顯示全部樓層
wldtw2008 發表於 15-3-5 11:41
不用這麼麻煩吧,把欲四捨五入的值加上0.0005 強迫進位,再捨掉四位後的小數即可。
A=1.2345
Prec(A+0.0005 ...

No, it is not enough as it is working for 3 decimal places only.

That's why

  1. function cPrec( value, decplaces )
  2. {
  3.     return Prec( value + 5*10^-(decplaces+1), decplaces );
  4. }
複製代碼


評分

參與人數 1金錢 +2 收起 理由
wldtw2008 + 2 這樣比較強!

查看全部評分

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-11-20 11:35

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |