js精度问题解决方法

//除法
			calculationAccuracyDivision(val1, val2) {
				if(!val1.toString().includes('.')){
					val1=val1+'.00'
				}
				if (val1.toString().includes('.')) {
					val1 = val1 + ''
					var val1first = val1.substring(0, val1.indexOf("."))
					var val1after = val1.substring(val1.indexOf(".") + 1, val1.indexOf(".") + 3)
					
					if(val1after.length<2){
						val1after=val1after+'0'
					}
					val1 = val1first + val1after
				}
				if(!val2.toString().includes('.')){
					val2=val2+'.00'
				}
				if (val2.toString().includes('.')) {
					val2 = val2 + ''
					var val2first = val2.substring(0, val2.indexOf("."))
					var val2after = val2.substring(val2.indexOf(".") + 1, val2.indexOf(".") + 3)
					if(val2after.length<2){
						val2after=val2after+'0'
					}
					val2 = val2first + val2after
				}
				return val1 / val2
			},
			//乘法
			calculationAccuracyMultiplication(val1, val2) {
				
				if(!val1.toString().includes('.')){
					val1=val1+'.00'
				}
				if (val1.toString().includes('.')) {
					val1 = val1 + ''
					var val1first = val1.substring(0, val1.indexOf("."))
					var val1after = val1.substring(val1.indexOf(".") + 1, val1.indexOf(".") + 3)
					
					if(val1after.length<2){
						val1after=val1after+'0'
					}
					val1 = val1first + val1after
				}
				if(!val2.toString().includes('.')){
					val2=val2+'.00'
				}
				if (val2.toString().includes('.')) {
					val2 = val2 + ''
					var val2first = val2.substring(0, val2.indexOf("."))
					var val2after = val2.substring(val2.indexOf(".") + 1, val2.indexOf(".") + 3)
					if(val2after.length<2){
						val2after=val2after+'0'
					}
					val2 = val2first + val2after
				}
				return (val1 * val2)/10000
			},
			//减法
			calculationAccuracySubtraction(val1, val2) {
				if(!val1.toString().includes('.')){
					val1=val1+'.00'
				}
				if (val1.toString().includes('.')) {
					val1 = val1 + ''
					var val1first = val1.substring(0, val1.indexOf("."))
					var val1after = val1.substring(val1.indexOf(".") + 1, val1.indexOf(".") + 3)
					
					if(val1after.length<2){
						val1after=val1after+'0'
					}
					val1 = val1first + val1after
				}
				if(!val2.toString().includes('.')){
					val2=val2+'.00'
				}
				if (val2.toString().includes('.')) {
					val2 = val2 + ''
					var val2first = val2.substring(0, val2.indexOf("."))
					var val2after = val2.substring(val2.indexOf(".") + 1, val2.indexOf(".") + 3)
					if(val2after.length<2){
						val2after=val2after+'0'
					}
					val2 = val2first + val2after
				}
				return (val1 - val2)/100
			},
			//加法
			calculationAccuracyAddition(val1, val2) {
				if(!val1.toString().includes('.')){
					val1=val1+'.00'
				}
				if (val1.toString().includes('.')) {
					val1 = val1 + ''
					var val1first = val1.substring(0, val1.indexOf("."))
					var val1after = val1.substring(val1.indexOf(".") + 1, val1.indexOf(".") + 3)
					
					if(val1after.length<2){
						val1after=val1after+'0'
					}
					val1 = val1first + val1after
				}
				if(!val2.toString().includes('.')){
					val2=val2+'.00'
				}
				if (val2.toString().includes('.')) {
					val2 = val2 + ''
					var val2first = val2.substring(0, val2.indexOf("."))
					var val2after = val2.substring(val2.indexOf(".") + 1, val2.indexOf(".") + 3)
					if(val2after.length<2){
						val2after=val2after+'0'
					}
					val2 = val2first + val2after
				}
				
				return (val1*1 + val2*1)/100
			}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
''; books.forEach((book, index) => { html += ` <tr> <td>${book.bookName}</td> <td>${book.authorName}</td> <td>${book.publisher}</td> <td>${book.bookType}</td> 在 JavaScript 中,可以使用一些方法解决相加精度问题。下面介绍一些常见的方法: <td>${book.isbn}</td> <td> <button data-index=&quot;${index}&quot; class=&quot;deleteBtn&quot;>删除</1. 将数字转换为整数进行计算,然后再将结果转换回浮点数。 例如,当你button> </td> </tr> `; }); bookData.innerHTML = html; const deleteBtns =需要将 0.1 和 0.2 相加时,可以将它们乘以一个数,将它们转换 document.getElementsByClassName('deleteBtn'); for (let i = 0; i < deleteBtns.length; i++) { deleteBtns[i为整数,相加后再除以这个数,得到一个精确的结果: ``` (0.1 *].addEventListener('click', deleteBook); } } // 渲染已借图书列表 function renderBorrowedBooks() { const 10 + 0.2 * 10) / 10 // 0.3 ``` 2. 使用 ES6 中新增 books = getBooks(); const borrowedData = document.getElementById('borrowedData'); let html = ''; books.forEach((book) => { 的 `Number.EPSILON` 常量来比较两个浮点数是否相等。 `Number.EPSILON` 表示 if (book.borrower) { html += ` <tr> <td>${book.borrower}</td> <td在浮点数中可表示的最小精度,可以用来判断两个浮点数的差是否小于这个>${book.bookName}</td> </tr> `; } }); borrowedData.innerHTML = html; } 值,从而判断它们是否相等。 例如,当你需要判断两个浮点数 a 和 b 是否相等时// 初始化 function init() { renderBooks(); renderBorrowedBooks(); const addBtn = document.getElementById('addBtn'); addBtn,可以使用以下代码: ``` Math.abs(a - b) < Number.EPSILON ``` 3. 使用一些第三.addEventListener('click', addBook); const borrowBtn = document.getElementById('borrowBtn'); borrowBtn.addEventListener('click', borrowBook); const returnBtn = document.getElementById('returnBtn'); returnBtn.addEventListener('click', returnBook); } init(); ``` 这是一个基本方库来处理精度问题,例如 Decimal.js 和 Big.js 等。 这些库提供了更高精度的数学的图书管理系统,在实际应用中还可以进行优化和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值