초보개발자!
1k
2019-07-04 23:05:14
7
236

spring 평균 수치가 안맞는 부분 질문이있습니다.


저 빨간 원으로 그려진부분이 더하면 102%가나옵니다. 최대는 100% 인데 

지금 이 계산방법이 저 서비스항목의 질문  항목의 각 더한값의 / 8 해서 반올림해서 나온값인데 

예를들어 보통이다 %값이 18이면 각 항목의값 round((40+40+20+20+20)/8) = 18이 나옵니다. 그런데 이런 방식으로 그냥 각 항목의 값을 더해서 8로 나누게되면 안될거같아서요.. 혹시 저와 비슷한 상황을 개발해보신분들은 이런 퍼센트 평균수치값 구할때 어떤식으로 하시나요? 

0
0
  • 답변 7

  • 고등어통조림
    703
    2019-07-05 01:02:57 작성 2019-07-05 01:14:46 수정됨

    각 항목들은 이미 %이고 그건 아마 이미 계산이 다 되서 라운드로 올림을 한 상태일테니 바로 그런 %인 항목들의 평균을 내면 안 될것 같아요


    각 항목들을 %가 아니라 원래 수치로 가져오셔서 더하고 나눠서 평균내고 라운드 해야 할듯한데...

    비슷한거 개발할때 후회된게 초창기 raw데이터부터 정수로만 할건지 소수점까지 허용할건지 그러면 몇자리까만 인정할건지 아니면 버릴건지 올릴건지 정하고 계산과정에서도 유효숫자는 같은 규칙으로 적용해야겠다라고 생각한 적이 있습니다

    어떤 언어는 유효숫자를 개발자가 정해주지 않으면 그 언어의 기존설정이 무조건 올림이거나 버림이어서 기대값과 완전 다른 값이 나오는 경우도 있었어요 

    그래서 아예 코드로 유효숫자 설정박고 진행해야 하더라구요 스프링의 경우 디폴트 유효숫자 규칙이 어떤지 찾아보세요

    0
  •  (づ。◕ ܫ ◕。)づ
    4k
    2019-07-05 06:34:25

    소수점...을 표현안하는 이유가 궁금하네요

    0
  • BumYokan
    565
    2019-07-05 08:32:31

    100%에 맞춰서 나오길 바라신다면 반올림 하시면 안됩니다.

    소수점 안보여주길 바라신다면

    소수점을 버림 한 후에 소수점은 생략했다고 하시면 됩니다.

    0
  • 초보개발자!
    1k
    2019-07-05 10:39:09

    그런데 딱 100에 맞춰서 나오게하려면 반올림을 해야되지않나요??

    0
  • BumYokan
    565
    2019-07-05 10:42:57

    반올림을 하시면 지금 테이블 보여주신 것 처럼

    17.5 2개 즉 0.5가 두개 나오면 둘다 올림되어 18이 됩니다.

    0
  • 초보개발자!
    1k
    2019-07-05 10:49:01

    그러면 이거를 소수점이하는 다버리고 

    만약에 98로 나온다면 

    100 -98 을 한다음에 2가나오잖아요  이 2를 

    그렇지않다 그렇다 전혀그렇지않다  퍼센트 아무곳에나 +2 를 해주는 방식은 안되나요?

    이런 로직이있다고하는데 서칭능력이 떨어지내요 ㅠㅠ

    0
  • BumYokan
    565
    2019-07-05 13:15:04

    아무곳에나 박아버리면 그건 믿을만한 데이터가 아닙니다.

    차라리 98로 나온다면 100-98 해서 2를 따로 보여주면서

    내림으로 인한 버려진 숫자라고 명시해주는게 좋아보입니다.


    아니면 소수점이 나오게 하는게 좋구요 소수점 1자리까지만 해도 99.*%는 나올테니까요

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.