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)
})
}
},
}
相關文章
- sql 保留兩位小數+四捨五入SQL
- js實現的數字四捨五入效果JS
- PHP 保留小數點後有效數字(四捨五入)PHP
- JavaScript保留指定位數小數但是不進行四捨五入JavaScript
- js實現的數字四捨五入效果程式碼例項JS
- js能夠四捨五入且能夠保留指定小數位數和千分位的程式碼JS
- iOS小數四捨五入總結iOS
- javascript實現的將小數轉換為整數不進行四捨五入JavaScript
- js對數字進行四捨五入運算包括負數JS
- php中四捨五入的數學函式PHP函式
- PHP實現四捨五入的3種方法PHP
- js操作日期(函式,js版的dateAdd與dateDiff,四捨五入(round()方法)並保留小數點後N位的函式)JS函式
- Java中數字的四捨五入和取整Java
- python 使用 round 方法保留 1 位和 2 位小數時沒有進行四捨五入Python
- javascript實現浮點數四捨五入效果程式碼JavaScript
- 那些關於JS四捨五入的事JS
- JavaScript數字四捨五入JavaScript
- oracle中round()四捨五入Oracle
- C++ 四捨五入與不四捨五入C++
- Java浮點數運算實現四捨五入和格式化方法總結Java
- 實現四捨五入效果的javascript程式碼例項JavaScript
- js四捨五入程式碼例項JS
- java中的四捨五入-銀行家舍入法Java
- js實現的保留兩位小數程式碼例項JS
- JS四則運算與四捨五入精度問題及解決方案JS
- mssql sqlserver 取消數值四捨五入的方法分享SQLServer
- JavaScript四捨五入的改進JavaScript
- JavaScript四捨五入的那些坑JavaScript
- js如何實現數字保留小數點後兩位小數JS
- JavaScript 賭運氣的四捨五入JavaScript
- Table tr 奇數偶數行漸變色Jquery實現jQuery
- javascript數字四捨五入程式碼例項JavaScript
- 實現保留指定數目小數的示例程式碼
- js實現如何保留float浮點數小數點後兩位JS
- Js保留兩位小數JS
- MySQL 之 ROUND 函式四捨五入的陷阱MySql函式
- JavaScript toFixed() 四捨五入規則JavaScript
- js實現四則計算(中綴,字尾表示式)JS