8-byte doubles can represent all 4-byte ints precisely이 주어지면 double을 저장하는 double A가 정수를 저장하는 B (정수 B는 A를 나눕니다)로 나눌 지 궁금합니다. 항상 자신의 몫 인 정수에 해당하는 정확한 double을 주시겠습니까? 그래서, 다음은정수를 나타내는 double의 정확한 나눗셈
int B,C = whatever s.t. B*C does not overflow 32-bit int
double(B*C)/double(C) == double((B*C)/C) ?
는 IEEE754 표준 보증이 작업을 수행 보장하고, B 및 C 정수이고, B의 * C는 32 비트 INT 내에서 맞는 경우?
필자가 테스트 한 결과, 필자가 시도한 모든 예제에서 효과가있는 것으로 보입니다. 파이썬에서 :
>>> (321312321.0*3434343.0)/321312321.0 == 3434343.0
True
묻는 이유는 matlab에은 (는) 자기의 int로 작업 할 수 있습니다, 그래서 종종 단지 정수 계산을위한 기본 복식을 사용하는 것입니다. 그리고 정수가 정확히 나눌 수 있다는 것을 알았을 때, 그리고 현재의 질문에 대한 대답이 '예'라는 것을 알게되면 int에 대한 캐스트, 즉 덜 읽을 수있는 idivide(..)
등을 피할 수 있습니다.
http://stackoverflow.com/q/3793838/2586922 –