PC 프로그램 내부의 화면 표시 스케일을 수정해 달라는 요청이 왔다.
기존엔 1152.00으로 표시되는 걸 11.52로 표시해달라는 것...
원시 데이터를 가공하는 부분을 다음과 같이 수정했다.
double volB = Convert.ToInt32(hexStrVolB, 16) / 100;
이랬더니 문제가...
소숫점 자리수는 앞으로 두자리 땡겨지는데 마지막 두 자리를 버림 처리 해버리는 것이였다.
찾아보니
https://bumday.tistory.com/193
[C#] int형 변수끼리 나눗셈 결과 소숫점 이하 값이 버려지는 현상
JavaScript과 같은 동적 타이핑(dynamic typing)을 지원하는 언어를 사용하다가 C#으로 넘어와 개발하다보면 자료형에 대해 간과하다가 이슈가 생길 때가 있다 . 이번 포스팅에서는 int형 변수끼리 나눗
bumday.tistory.com
아...
C#에서의 나눗셈은 정수 나누기 정수를 하면
결과가 실수더라도 실수가 저장되지 않고 소숫점 이하값이 버려지고
정수부만 변수에 들어간다는 것...
double volB = (double)Convert.ToInt32(hexStrVolB, 16) / 100; 나
double volB = Convert.ToInt32(hexStrVolB, 16) / 100.0;
처럼 한 쪽이 실수형이여야한다는 것.
지식이 늘었다.
'Tech > C#' 카테고리의 다른 글
C# Modbus 프로그램 간혈적 통신 중단 해결기 (0) | 2024.07.02 |
---|