나는 구문std :: floor 후에 int로 캐스트하면 올바른 결과가 보장됩니까?
int floor(double x);
하지만 double
std::floor
반환과 함께 floor
기능을하고 싶습니다.
static_cast <int> (std::floor(x));
올바른 정수를 제공 할 수 있는지 또는 오프라인별로 문제가있을 수 있나요? 그것은 효과가있는 것처럼 보이지만 확실히 알고 싶습니다.
보너스 포인트의 경우 도대체 std::floor
은 왜 double
을 반환합니까?
이 올바른 범위에 있다면 그래서, 캐스트는 사양이을 (의미 뭔가를) 말하는가 어디 괜찮를? ? –
음, 여기에 두 가지 작업이 있습니다 : std :: floor 및 cast. std :: floor는 정수를 반환하기위한 것이고 캐스팅은 정수 값으로 지정됩니다. std :: floor가 반환하는 한 진실로 정확한 정수 인 값, I ca 그것이 실패하는 것이 어떻게 의미가 있는지 보지 마라. –
어떻게 바닥에서 정확한 정수가 아닌 값이 반환됩니까? 작은 double (ε << 1)의 경우 floor (x)를 포함한 모든 정수 값을 나타낼 수 있습니다. 큰 double (엡실론 >> 1)의 경우, 정수 값만 나타낼 수 있으므로 floor (x) == x. – MSalters