Truncate Number to Two Decimal Places Without Rounding

Truncate number to two decimal places without rounding

Convert the number into a string, match the number up to the second decimal place:

function calc(theform) {    var num = theform.original.value, rounded = theform.rounded    var with2Decimals = num.toString().match(/^-?\d+(?:\.\d{0,2})?/)[0]    rounded.value = with2Decimals}
<form onsubmit="return calc(this)">Original number: <input name="original" type="text" onkeyup="calc(form)" onchange="calc(form)" /><br />"Rounded" number: <input name="rounded" type="text" placeholder="readonly" readonly></form>

Truncate Two decimal places without rounding

value = Math.Truncate(100 * value) / 100;

Beware that fractions like these cannot be accurately represented in floating point.

toFixed method without rounding to five digit

You can use an apropriate factor and floor it and return the result of the division.

Basically this solution moves the point to the left with a factor of 10^d and gets an integer of that and divided the value with the former factor to get the right digits.

function getFlooredFixed(v, d) {    return (Math.floor(v * Math.pow(10, d)) / Math.pow(10, d)).toFixed(d);}
var x = 2.305185185185195;
document.write(getFlooredFixed(x, 5));

Truncate float (not rounded) to 2 decimal places

This can be done by dropping the extra digits you don't want by using multiplication and division. For example, if you want 0.994 to be 0.99, you can multiply by 100 (to cover 2 decimal places), then truncate the number, and then divide it back by 100 to it to the original decimal place.

example:

  0.994 * 100 = 99.4
99.4 truncated = 99.0
99.0 / 100 = 0.99

So here is a function that will do that:

const truncateByDecimalPlace = (value, numDecimalPlaces) =>
Math.trunc(value * Math.pow(10, numDecimalPlaces)) / Math.pow(10, numDecimalPlaces)

console.log(truncateByDecimalPlace(0.996, 2)) // 0.99

Obtain two decimal places in JavaScript without rounding to the next bigger number

You could use Math.floor and some additional arithmetics:

Math.floor(15.7784514000 * 100) / 100

Or convert the number into a string, match the number up to the second decimal place and turn it back into a number:

Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/))

Then you can still call toFixed to get a string with a fixed number of decimal places.

var num1 = Math.floor(15.7784514000 * 100) / 100;console.log(num1);
var num2 = Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/));console.log(num2)console.log(num2.toFixed(2))

How do I get 2 place decimal without rounding off in MySQL?

TRUNCATE()

MySQL TRUNCATE() returns a number after truncated to certain decimal places. The number and the number of decimal places are specified as arguments of the TRUNCATE function.

  SELECT TRUNCATE(DateColumn,n) from TableName;

example:

  SELECT TRUNCATE(25.21512,2) from dual;

result:

-> 25.21


Related Topics



Leave a reply



Submit