c# DateTime과 TimeSpan으로 날짜와 시간 제어하기

DateTime .네트의 날짜와 시간은 델파이의 그것들에 비하면 좀 특이하다. 델파이의 날짜와 시간은 모두 double인데 .네트의 DataTime은 구조체이며 이거로는 제어를 충분히 할 수 없어서 TimeSpan이라는 구조체도 같이 써야 한다. DateTime은 시점이고 TimeSpan은 길이다. double에 비해 구조체의 용량이 더 크고 작동에도 부하가 크겠지만 그 차이가 얼마나 될지는 모르겠다. .네트의 구조체는 인스턴스가 만들어진 때 그 크기가 특정되지 않으므로…

프로그래밍 실수의 크기 비교하기

부동소수 프로그래밍 언어들에 따라 real, double, float, extended 등으로 이름지어지는 실수實數는 자릿수의 크기에 따라 정밀한 정도엄밀하게는 범위가 달라진다. 그래서 부동소수라고 한다. 여기에서 ‘부동’은 같지 않다는 不同이나 움직이지 않는다는 不動이 아니라 떠다닌다는 浮動floating-point이다. 예를 들어 어느 프로그래밍 언어의 실수형이 다섯 자리의 정확도precision를 보장한다고 하면 12,345.67890의 경우 소수들의 정확도는 담보되지 않는다. 그러나 0.67890의 경우에는 담보된다. 이러한 정확도의…

c# 멀티뜨레드 문제들, 뜨레드 안전성, 크로스-뜨레드, 데이터 레이스

멀티뜨레드는 동시에 이루어지는 작업들이다. 하나의 객체에 담겨 있는 데이터를 여러 뜨레드들에서 동시에 읽는 거는 문제될 게 없는데 동시에 쓰려고 하면 문제가 될 수 있다. 한 뜨레드에서 데이터를 쓰는 작업을 ‘마치기’ 전에 다른 뜨레드에서 기록을 한다면 이들은 서로 충돌할 수 있기 때문이다. 이런 문제는 세 가지 형태로 나타난다. 뜨레드 안전성 아래의 예제는 하나의 DataTable 셀에 객체를…