나는 메서드에 숫자를 전송하는 상황에서이 숫자를 6으로 나누고 숫자 6을 n 개의 항목으로 나눈 목록을 반환합니다. 나는 dictionary.count에서 나누는 숫자를 가져온다. 나는 그것을 반환하는 사전과 함께 리턴리스트를 결합한다. 반환 된 목록, 어떤 이유로 항상 올바른 수의 항목을 반환하지 않습니다. 그것은 12를 통해 잘 작동합니다.하지만 믿을만한 것이 아니라면 예측 가능합니다. 다음 숫자는 필요한 것보다 적은 1 개의 인덱스로 목록을 반환합니다 ... 13,15,18,23,25,20,27,28,30 ..... 아래 코드는 더 큰 프로젝트에서 가져 왔습니다. 당신이 기본이라는 텍스트 박스, 라벨과 버튼으로 폼에이 코드를 추가하는 경우이중 정밀도?
public void DivTest()
{
double value;
Double.TryParse(textBox1.Text, out value);
double div = 6/value;
int count = 1;
StringBuilder sb = new StringBuilder();
for (double d = div; d <= 6; d += div)
{
sb.Append(count.ToString()).Append(" : ")
.Append(d.ToString("0.0000")).Append(" : ")
.Append(div.ToString("0.0000")).AppendLine();
count++;
}
label1.Text = sb.ToString();
}
, 아마 중 하나를 당신과 함께 제대로 작동하지 않습니다. 마지막 줄은 항상 6이어야하지만, 내가 언급 한 숫자가 그 것이다. 반올림 문제라고 생각했지만이 예제에서는 반올림을 사용하지 않았습니다. 어떤 아이디어? 감사.
부동 소수점으로 .7-.4-.3! = 0.0이므로 부동 소수점을 사용하지 말 것을 제안합니다. 6 개 항목을 계산하려면 정수를 사용하여 이들을 계산하는 것이 좋습니다. – Sean
"...이 예제에서는 반올림을 사용하지 않습니다." 'double'을 사용한다면 항상 라운딩을 사용합니다. '6/value'를 쓸 때 얻을 수있는 결과는 실수가 아닌 6 ÷ 값과 정확히 같지 않을 수 있습니다. 정확한 결과 대신 가장 가까운 double 값으로 반올림됩니다. 'd + = div'를 할 때도 똑같은 일이 일어난다. –