[Flutter][Dart] Increasing/Down/Round Decimal, Fixing the length of the decimal point string
[플러터][다트] 소수점 올림/내림/반올림, 문자열의 소수점 길이 고정
소수점(double형) 값을 가공하고 처리할 때 특정 소수점 자리수에서 잘라내고 싶을 때가 있습니다.
이 때 참고하기 위해 간략히 정리하겠습니다.
아래 예시는 store라는 클래스 인스턴스가 있고,
이 인스턴스의 rating을 현재 유저의 상호작용으로 인해 추가된 평가를 업데이트하고자 하는 상황입니다.
평점이 4.333333333... 처럼 길어지면 가독성이 떨어지겠지요.
그 때문에 소수점을 올리거나 내리거나 반올림하는 것이 좋아보입니다.
(When processing and processing a double-point value, you may want to cut it from a specific decimal place.
I'll summarize it briefly for your reference at this time.
The example below is a class instance called store
You want to update the rating of this instance because of the current user's interaction.
The rating is 4.33333333... If it's as long as it is, it's less legible.
That's why it looks good to raise, lower, or round off the decimal point.)
올림 ceil()
var newRating = 4.1533;
store.rating = newRating.ceil();
결과 : 5
내림 floor()
var newRating = 4.1533;
store.rating = newRating.floor();
결과 4
반올림 round()
var newRating = 4.1533;
store.rating = newRating.round();
결과 4
위에서 store.rating은 double형으로 가정하고 진행했습니다.
만약 store.rating이 String이라면 어떨까요?
위의 함수들을 이용하여 잘라낸 다음 .toDouble()을 사용해도 되지만
var newRating = 4.1533;
store.rating = newRating.round().toDouble();
내림, 올림, 반올림을 굳이 할 필요가 없는 경우에는 아래와 같이 toStringAsFixed(int length)을 이용할 수 있습니다.
length만큼 소수점 아래의 자리수를 고정시키고 그 아래 숫자들은 버리는 동작을 하는 함수입니다.
(Above, store.rating is assumed to be a double type.
What if store.rating is String?
You can use the above functions to cut them off and use .toDouble()
If you don't have to go down, up, or round, you can use toStringAsFixed (int length) as shown below.
It is a function that holds the digits below the decimal point by length and throws away the numbers below it.)
소수점 길이 고정 toStringAsFixed(int length)
var newRating = 4.1533;
store.rating = newRating.toStringAsFixed(2);
결과 4.15
다시 이 결과를 double로 사용하고 싶다면 아래와 같이 형변환할 수 있겠네요.
(If you want to use this result as double again, you can change the shape as below.)
var newRating = 4.1533;
store.rating = double.parse(newRating.toStringAsFixed(2));