programing

소수점 2자리까지 부동을 표시하는 JavaScript

newsource 2023. 1. 30. 22:00

소수점 2자리까지 부동을 표시하는 JavaScript

소수점 2자리까지 표시하려고 했어요.

내가 할 수 있을 것 같아서toPrecision(2)를 참조해 주세요.

단, 번호가0.05, 나는 이해하다0.0500그대로 있었으면 좋겠어요.

JSbin에서 확인하세요.

어떻게 하면 좋을까요?

몇 가지 솔루션을 코딩할 수 있지만, 이와 같은 솔루션이 내장되어 있으면 좋겠다고 생각합니다.

float_num.toFixed(2);

참고:toFixed() 지정된 길이를 충족하기 위해 필요한 경우 0으로 반올림하거나 채웁니다.

이 기능을 사용하여toFixed동작하고 있습니다만, IE에서는 버그가 발생하고 있습니다.신뢰할 수 있는 솔루션을 원하신다면, 제 답변을 보세요.

number.parseFloat(2)동작하지만 문자열이 반환됩니다.

숫자 유형으로 유지하려는 경우 다음을 사용할 수 있습니다.

Math.round(number * 100) / 100

어떻게 이 질문을 하게 되었는지는 모르겠지만, 이 질문을 받은 지 몇 년이 지났지만, 저는 제가 따르는 빠르고 간단한 방법을 추가하고 싶습니다. 이 방법은 저를 실망시킨 적이 없습니다.

var num = response_from_a_function_or_something();

var fixedNum = parseFloat(num).toFixed( 2 );

대신 시도하다toPrecision.

와 함께toFixed소수점 길이를 다음과 같이 설정할 수 있습니다.

let number = 6.1234
number.toFixed(2) // '6.12'

그렇지만toFixed문자열을 반환합니다.또,number는 소수점을 전혀 포함하지 않고 용장0 을 추가합니다.

let number = 6
number.toFixed(2) // '6.00'

이를 피하기 위해서는 결과를 숫자로 변환해야 합니다.이것은, 다음의 2개의 방법으로 실시할 수 있습니다.

let number1 = 6
let number2 = 6.1234

// method 1
parseFloat(number1.toFixed(2)) // 6
parseFloat(number2.toFixed(2)) // 6.12

// method 2
+number1.toFixed(2) // 6
+number2.toFixed(2) // 6.12

function round(value, decimals) { return Number(Math.round(value+'e'+decimals)+'e-'+decimals); }

round(1.005, 2) // 1.01 반환

round(1.004, 2); // 1.00이 아닌1을 반환한다.

답변은 다음 링크에 있습니다.http://www.jacklmoore.com/notes/rounding-in-javascript/

스트링 타입이 아니라 두 자리 숫자가 필요한 경우 이 방법을 사용했습니다.

    const exFloat = 3.14159265359;
    
    console.log(parseFloat(exFloat.toFixed(2)));

믹스도 해볼 수 있고Number()그리고.toFixed().

대상 번호를 X자리의 멋진 문자열로 변환한 후 형식화된 문자열을 숫자로 변환합니다.

Number( (myVar).toFixed(2) )


아래의 예를 참조해 주세요.

var myNumber = 5.01;
var multiplier = 5;
$('#actionButton').on('click', function() {
  $('#message').text( myNumber * multiplier );
});

$('#actionButton2').on('click', function() {
  $('#message').text( Number( (myNumber * multiplier).toFixed(2) ) );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<button id="actionButton">Weird numbers</button>
<button id="actionButton2">Nice numbers</button>

<div id="message"></div>

toFixed()method는 고정 소수점 표기법을 사용하여 숫자를 포맷합니다.

여기 구문이 있습니다.

numObj.toFixed([digits])

digits 인수는 옵션이며 기본값은 0 입니다.그리고 반환 타입은 번호가 아닌 문자열입니다.하지만 다음을 사용하여 숫자로 변환할 수 있습니다.

numObj.toFixed([digits]) * 1

또한 다음과 같은 예외가 발생할 수 있습니다.TypeError,RangeError

다음은 브라우저의 자세한 내용과 호환성입니다.

let a = 0.0500
a.toFixed(2);

//output
0.05

그리고 또...IntlAPI를 사용하여 로케일 값에 따라 소수점 형식을 지정합니다.소수점 구분자가 점 "."이 아니라 쉼표 ""인 경우, 이는 특히 중요합니다. 이는 독일의 경우와 같습니다.

Intl.NumberFormat('de-DE').formatToParts(0.05).reduce((acc, {value}) => acc += value, '');

이 값은 소수점 이하 3자리까지 반올림됩니다.round()디폴트 케이스에서는, 상기의 함수가 제안되고 있습니다.소수 자릿수를 지정하기 위해 동작을 사용자 정의하려면 최소 및 최대 분수 자리 옵션이 있습니다.

Intl.NumberFormat('de-DE', {minimumFractionDigits: 3}).formatToParts(0.05)

저는 이 기능을 만들었습니다.정상적으로 동작하지만 문자열이 반환된다.

function show_float_val(val,upto = 2){
  var val = parseFloat(val);
  return val.toFixed(upto);
}

언급URL : https://stackoverflow.com/questions/3163070/javascript-displaying-a-float-to-2-decimal-places