5
A
回答
6
的dc
manual說:
大多數運算是由「精確值」,您可以用
k
命令設置的影響。默認精度值爲零...
/
彈出兩個值,將從彈出的第一個彈出的第二個值分開,並推送結果。小數位數由精度值指定。
所以你可以截斷使用0k1/
,或只是1/
如果你知道精度爲0,這是默認(向零)。例如:
$ dc -e '12.9 1/ p'
12
$ dc -e '_12.9 1/ p'
-12
其他類型的四捨五入更困難。註冊a
[_1*]sa
存儲命令_1*
(乘以-1):爲輪最接近的整數,您可以使用[_1*]sad.5r0>a+0k1/
,例如:$ dc -e '12.9 [_1*]sad.5r0>a+0k1/ p' 13 $ dc -e '_12.9 [_1*]sad.5r0>a+0k1/ p' -13
的簡單說明。
d
重複堆棧頂部的值(我們想要的值,稱爲v)。.5r
推0.5,然後交換前兩個值,所以堆棧現在是v 0.5 v。0>a
寄存器執行命令a
如果0>v(即,如果v是負的)。堆棧現在0.5 v如果v是正的,或-0.5 v如果v是負的。+
增加頂部的兩個值並推動v + 0.5如果v是正的,或v - 0.5如果v是負的。0k1/
如上所述截斷。
如果您知道您舍入的數字是非負數,則可以使用.5+0k1/
;如果您另外知道精度爲0,則可以使用.5+1/
。
至舍入爲,使用[dX[1-]sa0<a]sad0>a0k1/
。
到取整,使用[dX[1+]sa0<a]sad0<a0k1/
。
所有這些建議都使用寄存器a
,因此您可能需要在實際的程序中調整它們。
1
大廈加雷思的答案,請使用以下的銀行家舍入(即四捨五入到最接近甚至整數):[_1*]sa[d1r0>a+]sbd0k1/2%0!=b1/
。
注意這使用額外的寄存器,b。
這是一個有點遲鈍,所以讓我們把它分解:
[_1*]sa #1- Assign a macro "$input *= -1" to register 'a'
[d1r0>a+]sb #2- Assign a macro "if($input<0){$input -= 1} else{$input += 1}"
# to register 'b'
d #3- Duplicate the input value; the duplicate will be used
# to decide if the input is odd or even.
0k #4- Set precision to 0; this makes the 1/ operation truncate
# all digits to the right of the decimal point.
1/ #5- Truncate those decimal places on our duplicate input.
2% #6- Modulo 2; if we get 0, it was even, otherwise it's odd.
# Note this consumes the duplicate from line #3.
0!=b #7- If it was odd, run the macro in register 'b'. This adds +/-1
# to the input, respectively if it's positive or negative.
1/ #8- Truncate decimal places; if the input was odd we're now
# at floor($input+1) for positive or floor($input-1)
# for negative; if it was even we're at floor($input).
相關問題
- 1. 將雙舍入舍入(即使之前的計算結果爲<.5)
- 2. 使用Javascript計算舍入問題
- 3. 使用Python複製計算器結果
- 4. 平均計算器[舍入問題]
- 5. Android計算器數字四捨五入
- 6. CSS計算()四捨五入
- 7. 計算總是舍入的
- 8. 使用ActionListener輸出幾何計算器的計算結果
- 9. JavaScript計數器 - 四捨五入的結果
- 10. 舍入這個結果
- 11. 在dc中計算對數
- 12. 從新桌面獲得DC&RC
- 13. Java - 如何將計算語句結果舍入爲兩位有效數字
- 14. 用結果來計算比
- 15. 計算器輸入更改爲未被佔用的結果
- 16. 使用查詢結果進行計算
- 17. 斯威夫特3:四捨五入嵌入文本在一個簡單的計算器的結果
- 18. 浮點計算和四捨五入
- 19. 在Javascript中計算舍入函數。
- 20. 計算被四捨五入SQL Server 2012
- 21. 鉻37計算值四捨五入
- 22. 雙舍入錯誤,無需計算
- 23. MySQL加入3個計算結果
- 24. 將計算結果插入LaTeX文檔
- 25. 使用bc計算bash,並舍入浮點數
- 26. 計算器結果不可思議
- 27. JQuery計算器不顯示結果
- 28. 利息計算器不顯示結果
- 29. 從Java計算器中獲取結果
- 30. 的Javascript計算器結果閃爍