最近因為公司最近要改報表公式
因為對BigDicmal不是很熟
所以又特別翻了一下
這邊簡單說明一下,城市運算很大數字會失準
所以必須用別的方法算出正確數字
1 | rs.getBigDecimal("num").multiply(new BigDecimal(Double.valueOf(1.245))).setScale(0, BigDecimal.ROUND_HALF_UP); |
瓦特希諾生活記錄: BigDecimal 四捨五入
BigDecimal通过setScale设置小数位数发生ArithmeticException - 小木人印象
setScale(0, BigDecimal.ROUND_HALF_UP
);
後面, BigDecimal.ROUND_HALF_UP
一定要帶入
否則當四捨五入會跳出Exception
You have two BigDecimal numbers both of which require over a 1000 decimal places. Trying to set the scale to only have 113 decimal places means you will lose precision and therefore you need to round.
You can use the setScale methods that take a RoundingMode to prevent the exception but not the rounding.
java - Rounding necessary with BigDecimal numbers - Stack Overflow
System.out.println(“12.5的四舍五入值:” + Math.round(12.5));
- Java Tutorial 第二堂(1)數值與字串型態 by caterpillar | CodeData
- Java BigDecimal詳解,提供了豐富的四捨五入規則 - 掃文資訊
- BigDecimal通过setScale设置小数位数发生ArithmeticException - 小木人印象
- BigDecimal.setScale 处理java小数用法 - 天涯海角的博客 - CSDN博客
- BigDecimal.setScale()方法 - lilie008的专栏 - CSDN博客
PHP 也有浮點數算術問題
1 | 例如: |
黃聰:php精度計算問題 - 掃文資訊1
2
3
4echo .1 + .2; //0.3
var_dump(.1 + .2); //float(0.30000000000000004441)
// PHP echo converts 0.30000000000000004441 to a string and shortens it to “0.3”. To achieve the desired floating point result, adjust the precision ini setting: ini_set(“precision”, 17).
0.30000000000000004.com/
1 | These functions are only available if PHP was configured with --enable-bcmath . |
倍精轉數字小筆記
PHP倍精變成數字(字串)
1 | number_format(1.2378147769392E+14,0,'','') |
Convert exponential to a whole number in PHP - Stack Overflow
PHP 數字字串(with comma)轉乘數字
1 | $number = '1,000'; |
Or1
2
3$number = '1,000.5669';
$number = (float) str_replace(',', '', $number);
var_dump($number);
getting int value from comma separated number php - Stack Overflow
MySQL 倍精變成數字(字串)
1 | select REPLACE(FORMAT(100000000000000000000000000000000000000, 0), ',', '') |
MySQL 轉型型態方法
[資料庫] 如何轉換 Mysql varchar type 到 int type | 小惡魔 - 電腦技術 - 工作筆記 - AppleBOY
使用浮點數最最基本的觀念 / 一般討論區 / 程式設計俱樂部
為什麼在項目中要儘量避免使用浮點數,不使用浮點數,那該如何計算浮點數? - 知乎
CODE-分贓程式的寫法-黑暗執行緒
什麼時候要用浮點數、什麼時候要用倍精?
我目前來看在算錢,尤其算拆分比(有用到乘除)算到有小數點會影響到
盡可能用bigdicmal這種東西