2017-10-23 1 views
0

액세스 2016에 단순 밀도 계산을 포함하려고하지만 입력 크기 (질량 또는 구 직경)가 < 0.5 인 경우이 값은 0 값을 반환합니다. 필드가 큰 차원에서 잘 작동하므로 더 작은 값이 도중에 어딘가에서 0으로 반올림되었다고 가정하지만 어디에서 확인할 수 없습니다.액세스 2016 계산 된 필드가 0으로 반올림합니다.

내 테이블의 입력에 대해 각 필드의 데이터 유형이 "숫자"로 설정된 경우 "녹색 질량", "녹색 막대"및 "녹색 등량"필드 이름이 있고 필드 크기가 " (두 배 또는 십진수), 소수점 이하 자릿수는 4 자리 숫자로 설정됩니다.

결과 밀도는 데이터 유형이 "계산 됨"으로 설정된 필드 "외관 녹색 밀도"에 표시됩니다. 결과 유형 가 "single"로 설정되고 Decimal Places가 4 자리로 설정됩니다.

다양한 액세스 포럼 및 웹 사이트보고 후, 나는 내 필드 크기로 단일 또는 이중 사용하려는 확신 해요,하지만 나는 또한 0

가 계속 진수 바이트 정수를 시도했습니다 아무도 왜 이것이 작동하지 않는지 설명 할 수 있습니까?

방정식은 다음과 같습니다. 이것은 3 부분으로 구성된 If 문 (구의 크기가 주어지면, 구의 caclulate 밀도, 디스크 크기가 주어지면, 입방체의 차원을 계산할 때 디스크의 밀도를 계산하는 등 ...) 때문에 약간 복잡합니다. 세 가지 경우 모두 큰 차원 (> 0.5)에서 작동하지만 차원 3은0.5의 경우 모두 0입니다.

IIf([GreenPole],[GreenMass]/(3.14159265359/6*2.54^3*(([GreenPole]+[GreenEquator])/2)^3),IIf([GreenDia],([GreenMass]/(3.14159265359*([GreenDia]/2)^2*[GreenHeight]*2.54^3)),IIf([GreenLength],[GreenMass]/([GreenLength]*[GreenWidth]*[GreenThickness]*2.54^3),0)))

구의 밀도 식의 첫 번째 부분이다 :

`IIf([GreenPole],[GreenMass]/(3.14159265359/6*2.54^3*(([GreenPole]+[GreenEquator])/2)^3),0) 
+1

계산에 사용 된 공식을 모른 채 말하기 어렵습니다. –

+0

수식을 포함하도록 질문을 업데이트했습니다. 나는 3 개의 모든 경우 (구, 디스크, 큐브)에 동일한 오류가 있기 때문에 테이블 설정의 반올림/십진수 한도라고 확신합니다 ... – AMiller

+0

서식 문제 일 수 있습니까? –

답변

0

올리버 Jacot-Descombes 날은 오른쪽 방향으로 시작되었다. 코딩에 대한 경험이별로 없지만 IIf 문에서 식별 된 필드가 부울 또는 예/아니요 필드로 변환되고 0.5 미만의 값은 반올림되고 결과는 truepart는 0

이다 나는에 코드를 수정 :

IIf([GreenPole]>0,[GreenMass]/(3.14159265359/6*2.54^3*(([GreenPole]+[GreenEquator])/2)^3),0) 

그리고 모든 것이 작동합니다. (또한 두 번째 및 세 번째 IIf 구문을 IIf([GreenLength]>0IIF([GreenDia]>0으로 수정했습니다.)

관련 문제