Vue中使用js實現保留小數的奇入偶不入,四捨六入的計算
Vue中使用js實現保留小數的奇入偶不入,四捨六入的計算
使用js實現保留小數的奇入偶不入,四捨六入的計算
handleDataUtils.js
/** 處理數值資料:四捨六入奇進偶不進
* 1,如果取小數的最後一位為5,5前為奇數進位,為偶不進,五後非零就進一,五後皆零看奇偶,五前為偶應捨去,五前為奇要進一
* 2.5後不為0時就入,為0時看5前,奇進偶不進
* 3.四舍,六入
* 傳入數值和保留位數*/
export function handleNumber(number, fixed = 0) {
number = String(number);
//可以考慮清掉末尾的0,暫時限制了不會有,因為傳入數值,末尾0是去掉的
let index = number.indexOf(".");
if (index == -1) {
//沒有小數,直接返回
return number;
}
//取到保留小數位的下一位,5.5555取保留倆位,那就是小數點後第三位
let indexFixed = index + fixed +1;
if (indexFixed >= number.length) {
//如果小數位數不夠直接返回
return number;
}
//取保留位數的後一位做判斷,以下是有5的判斷
let endNumber = number.substr(indexFixed,1);
if (endNumber != "5") {
//如果做判斷的數不是五,就按正常的四捨五入,即忽略了5,後面補0的那些由於是數字傳進來,0已經去掉,此處不做處理
return Number(number).toFixed(fixed);
}
if (indexFixed != number.length-1) {
//由於當前判斷位不是最後一位,而又去除了0,那麼後面後的位數應該直接入位,五後不為0時入,由於會有小於五的,四捨五入肯定不行,那麼只能擷取到當前保留位數,然後轉成數字加上10的負fixed的次方即可
number = number.substring(0, indexFixed)
return (Number(number) + Number(Math.pow(10,-fixed))).toFixed(fixed);
//return this.accAdd(number,Math.pow(10,-fixed))
}
//接下來就時五後沒有值也就是0的需要看前面的奇入偶不入了,取當前位的上一位
let twoNumber = number.substr(indexFixed-1,1);
if ("13579".indexOf(twoNumber) != -1) {//奇進
number = number.substring(0, indexFixed)
return (Number(number) + Math.pow(10,-fixed)).toFixed(fixed);
}
//偶不進,將取值的當前位數,直接擷取字元即可
return number.substr(0,indexFixed);
}
注意:傳入的引數一定是數值,否則字串可能造成是末尾有0,此處傳入數值小數位末尾0會抹去
注意:倆數直接相加丟失了精度,此處因為丟失的精度後數值度為9,所以直接取保留位數即可。倆數相減也會丟失精度,數值度為0所以用.toFixed也一樣可以
注意:number.substr(第幾位開始,取幾位);,從零開始算
注意:number.substring(從第幾位, 到第幾位);,從零開始算
注意:Number(number).toFixed(保留的小數位數);這個方法應該是四捨六入不包含五。
如何使用
匯入
import { handleNumber } from '@/utils/handleDataUtils';
使用
methods: {
/** 計算*/
count() {
setTimeout(()=>{
this.count_1();
},10)
},
/**計算*/
count_1() {
//(L1-L)/L0 * 100
let l0 = this.form.getFieldValue('datumLength');
let l_1 = this.form.getFieldValue('result1');
let l1_1 = this.form.getFieldValue('result4');
if ((Number(l0) != 0) &&this.isValuable(l0) && this.isValuable(l_1) && this.isValuable(l1_1)) {
this.form.setFieldsValue({
"result5": handleNumber(Number((Number(l1_1) - Number(l_1)) / Number(l0) * 100), 3)
})
}
},
}
相關文章
- PHP 保留小數點後有效數字(四捨五入)PHP
- iOS小數四捨五入總結iOS
- python 使用 round 方法保留 1 位和 2 位小數時沒有進行四捨五入Python
- 那些關於JS四捨五入的事JS
- Java中數字的四捨五入和取整Java
- JavaScript數字四捨五入JavaScript
- C++ 四捨五入與不四捨五入C++
- Java浮點數運算實現四捨五入和格式化方法總結Java
- oracle中round()四捨五入Oracle
- JS四則運算與四捨五入精度問題及解決方案JS
- java中的四捨五入-銀行家舍入法Java
- JavaScript四捨五入的改進JavaScript
- mssql sqlserver 取消數值四捨五入的方法分享SQLServer
- JavaScript 賭運氣的四捨五入JavaScript
- Day42--四捨五入
- Table tr 奇數偶數行漸變色Jquery實現jQuery
- Vue.js實現可配置的登入表單Vue.js
- js實現四則計算(中綴,字尾表示式)JS
- JavaScript toFixed() 四捨五入規則JavaScript
- BigDecimal使用ROUND_HALF_UP進行四捨五入Decimal
- 在頁面中的應該使用奇數還是偶數的字型?為什麼呢?
- PHP取整,四捨五入取整、向上取整、向下取整、小數擷取PHP
- DELPHI四捨五入問題解決
- 通過計算機語言自定義保留小數計算機
- js實現element中可清空的輸入框(2)JS
- Vue.js入門學習 -- 計算屬性Computed( 十一)Vue.js
- input限制只能輸入整數或保留小數點後2位的浮點數
- 使用Oracle CEIL函式進行萬位四捨五入HGOracle函式
- 【譯】Vue 的小奇技(第六篇):在 Vue.js 2.6 中不使用 Vuex 來建立 storeVue.js
- 使奇數位於偶數前面
- Metal入門教程(四)灰度計算
- Vue中實現輸入框的自動補全功能Vue
- vue中頁面載入進度條效果的實現Vue
- vue particles.js 登入背景實現粒子動效VueJS
- js-正負數保留小數點特定位數JS
- 2022管綜數學-考點1:奇數、偶數、實數運算,考點 2:質數、合數
- 面試題 - 使用執行緒交替列印奇數偶數面試題執行緒
- 面試題-使用執行緒交替列印奇數偶數面試題執行緒