Math in Solidity is done entirely using fixed-point. For ether, there's no need to use fractional values - all values are represented in wei, which is the smallest unit of ether.
If you want to send 0.5 ether, you can instead specify your literal as "500 finney", which will be converted into wei:
msg.sender.send(1 ether / 2);
which are both exactly equivalent to:
If you want to multiply a value by a fraction (eg, 2/3), first multiply by the numerator, then divide by the denominator:
value = (value * 2) / 3;
It's worth noting, too, that floating point for financial math is a terrible idea - it introduces rounding errors that easily lead to lost money.