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

+ Recent posts