比如說我下面的十進制值:
讓 myDecimal = 117.049701384;
我想向用戶顯示 117.05 但不更改上面的原始精確值。
基本上我想要的是用小數來模擬 Excel 行為,它顯示一個帶有兩位小數的數字,但保留所有數學運算的小數。
我想這樣做的原因是因為我想讓 UI 保持干凈的大十進制數字,但也要保持我必須執行的數學運算盡可能精確。我想我可以復制變數,但這聽起來既麻煩又乏味。
這在Javascript中可行嗎?
我在這個應用程式中使用 Javascript 和 VueJS 2.x。
提前致謝。
uj5u.com熱心網友回復:
當然,您可以使用方法toFixed()。
例如:
let myDecimal = 117.049701384;
console.log(myDecimal.toFixed(2)); // 117.05
uj5u.com熱心網友回復:
在您回傳 ui 的 mydecimal 值的地方使用它
mydecimal.tofixed(2)
uj5u.com熱心網友回復:
像這樣的東西?
document.querySelectorAll("span[data-value]")
.forEach(span => span.textContent = ( span.dataset.value).toFixed(2)); // or the VUE equivalent
<span data-value="117.049701384"></span><br/>
<span data-value="217.01384"></span>
uj5u.com熱心網友回復:
如果你想用四舍五入截斷然后 toFixed 是函式
如果你不想四舍五入那么你總是可以使用 regEx
let newVarT = (117.049701384).toFixed(2)-0
let newVarR = (117.049701384 "").match(/([\d] \.[\d]{0,2})/)[1]-0
console.log( "toFixed", newVarT, "RegEx", newVarR );
結尾-0轉換回數字
uj5u.com熱心網友回復:
如果按照設計,您的變數應包含在運行時不得更改的值,請不要使用 宣告它let,而是使用它const。這將在未來為您節省一些時間。然后,在向用戶顯示常量的同時,根據需要轉換/格式化常量。
// Your value
const myDecimal = 117.049701384
// Show rounded result to user
console.log(Math.round(myDecimal * 100) / 100);
// Your constant still constant, obviously
console.log(myDecimal)
uj5u.com熱心網友回復:
您可以使用computed property或filter:
new Vue({
el: '#demo',
data() {
return {
myDecimal: 117.049701384
}
},
computed: {
decimalRounded() {
return this.myDecimal.toFixed(2)
}
},
filters: {
decimalFiltered: function (value) {
if (!value) return ''
return value.toFixed(2)
}
}
})
Vue.config.productionTip = false
Vue.config.devtools = false
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="demo">
<p>{{ myDecimal }}</p>
<p>with computed: {{ decimalRounded }}</p>
<p>with filter: {{ myDecimal | decimalFiltered }}</p>
</div>
uj5u.com熱心網友回復:
最后我使用 toFixed(2)-0 直接顯示給用戶。這樣它就不會改變原始值,我仍然可以盡可能精確地將它用于其余的應用程式數學運算。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/346402.html
標籤:javascript Vue.js 十进制 四舍五入
