Yes, as long as you are using a binary floating-point (such as the very common IEEE-754 binary floating-point) and do not overflow to infinity or underflow to subnormal numbers. In binary floating-point, multiplication or division by two is exact until the exponent limits are reached.
For 32-bit IEEE-754 binary, the finite normal values go up to 2128−2104 and down to 2−126. (There are positive subnormal values as low as 2−149, but they have fewer bits in their significand [fraction part] than normal numbers, so precision is reduced.)
For 64-bit IEEE-754 binary, the finite normal values go up to 21024−2971 and down to 2−1022. (There are positive subnormal values as low as 2−1074.)
There is no way (without context) to determine whether a floating-point number exactly represents or only approximates some prior number. (There is a way to detect when floating-point operations have rounded a result. Accessing this additional information is often neglected in implementations of programming languages.) Once a number is converted to a floating-point number, the floating-point number exactly represents what it represents. It contains no information about the amount of rounding error that has occurred previously. (If you have other information about the prior number, such as that it came from a decimal numeral with five significant digits, then you may be able to deduce things about the original number.)