소수점 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
그리고 또...Intl
API를 사용하여 로케일 값에 따라 소수점 형식을 지정합니다.소수점 구분자가 점 "."이 아니라 쉼표 ""인 경우, 이는 특히 중요합니다. 이는 독일의 경우와 같습니다.
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
'programing' 카테고리의 다른 글
SQL Server 스토어드 프로시저를 MySQL(MariaDB)로 다시 쓰기 (0) | 2023.01.30 |
---|---|
Java 'localhost:10.0'을 DISPLAY 변수 값으로 사용하여 X11 창 서버에 연결할 수 없습니다. (0) | 2023.01.30 |
Python에서 dict 객체의 결합 (0) | 2023.01.30 |
Jinja2에서 날짜 형식을 어떻게 써요? (0) | 2023.01.30 |
대용량 데이터 테이블에서 각 사용자의 첫 번째/마지막 행을 선택하는 SQL 퍼포먼스 (0) | 2023.01.30 |