setprecision float ejemplos c++ floating-point

setprecision - float c++ ejemplos



¿Se garantiza que un número entero flotante dividido por sí mismo sea 1.f? (2)

Si escribo

int x = /* any non-zero integer value */; float y = x; float z = y / y;

¿Se garantiza que z es exactamente 1.f?


No, no en todos los casos, incluso para IEEE754.

Por ejemplo, con int x = 0; , obtendrás NaN. ( Live )


Si su implementación de C ++ usa IEEE754, entonces sí, esto está garantizado. (El operador de división debe devolver el mejor valor de punto flotante posible).

Las únicas excepciones para y / y , en general, no son 1f son los casos en que y es NaN , +Inf , -Inf , 0f y -0f , o si está en una plataforma donde int es tan amplio que ciertas instancias de no se puede representar en un float sin que ese float se establezca en +Inf o -Inf 1 . Dejando a un lado ese punto final, en su caso eso significa que int x = 0; producirá la única excepción.

IEEE754 es extremadamente común. Pero para asegurarse, pruebe el valor de

std::numeric_limits<float>::is_iec559;

1 Una plataforma, por ejemplo, con un int 128 bits y un flotante IEEE754 de 32 bits exhibiría este comportamiento para ciertos valores de x .