2017-01-28 1 views
1

10 진수 값이있는 경우에만 d3에서 소수 자릿수 2자를 지정합니다. 또한 하나의 단일 형식 기능으로 작업하기를 원합니다.소수 자릿수가있는 경우에만 소수 자릿수 2 자리 숫자로 배열하십시오.

지금은 이것을 사용하고 있습니다. 이 문제를 해결할 수있는 방법이 있습니까?

d3.format(",.2f")(10101); //10,101.00 which must be displayed as 10,000 only 

d3.format(",.2f")(12334.2); //12,334.20 this is okay 

답변

1

나는 그것이 하나 개의 포맷 기능

잘 작업 할, 그 수는 없습니다. D3 형식 함수는 에 맞게 조정할 수 없습니다.

그러나 두 개의 형식 함수를 사용할 수 있으며 전달할 숫자에 소수점 이하가 있는지 테스트 할 수 있습니다. 테스트 할 수있는 한 가지 방법은 다음과 같습니다.

number % 1 

이는 정수로 0을 반환합니다.

다음, ternary operator에, 당신은 당신이 사용할 것이다하는 d3.format 기능을 선택할 수 있습니다

var formatInteger = d3.format(","); 
 
var formatDecimal = d3.format(",.2f"); 
 

 
var number1 = 10101; 
 
var number2 = 12334.2; 
 

 
function format(number){ 
 
return !(number % 1) ? formatInteger(number) : formatDecimal(number) 
 
} 
 

 
console.log(format(number1)) 
 
console.log(format(number2))
<script src="https://d3js.org/d3.v4.min.js"></script>

: 여기
!(number % 1) ? someFormat(number) : otherFormat(number) 

는 데모입니다
관련 문제