最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

vue.js - Display a number with two decimals to the user without changing the original precise value [javascript] - Stack Overflo

programmeradmin0浏览0评论

Say for example I the following decimal value:

let myDecimal = 117.049701384;

I want to show the user 117.05 but without changing the original precise value above.

Basically what I want is to mimic Excel behaviour with decimals, where it displays a number with two decimals but holds all the decimals for math operations.

The reason I want to do this is because I want to keep the UI clean of huge decimals numbers, but also keeping the math operations that I have to perform as precise as possible. I guess I can duplicate variables but that sounds cumbersome and tedious.

Is that posible in Javascript?

I am using Javascript and VueJS 2.x in this App.

Thanks in advance.

Say for example I the following decimal value:

let myDecimal = 117.049701384;

I want to show the user 117.05 but without changing the original precise value above.

Basically what I want is to mimic Excel behaviour with decimals, where it displays a number with two decimals but holds all the decimals for math operations.

The reason I want to do this is because I want to keep the UI clean of huge decimals numbers, but also keeping the math operations that I have to perform as precise as possible. I guess I can duplicate variables but that sounds cumbersome and tedious.

Is that posible in Javascript?

I am using Javascript and VueJS 2.x in this App.

Thanks in advance.

Share Improve this question asked Nov 2, 2021 at 19:36 user3670188user3670188 552 silver badges8 bronze badges
Add a ment  | 

6 Answers 6

Reset to default 6

Of course, you can use method toFixed().

For example:

let myDecimal = 117.049701384;
console.log(myDecimal.toFixed(2)); // 117.05

use this where you return the mydecimal value back for the ui

mydecimal.tofixed(2)

Something like this?

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>

If you want truncation with rounding then toFixed is the function
If you do not want rounding then you can always use 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 );

The ending -0 converts back to a number

If by design your variable should contain value that must not be changed in runtime, do not declare it with let, but use const instead. This will save you some time in future. Then just convert/format your constant as you wish while displaying it to user.

// 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)

At the end I used toFixed(2)-0 to display it directly to the user. This way it doesn't change the original value and I can still use it for the rest of the application math operations as precise as posible.

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论