Minecraft wiki entry for Command_blocks_and_functions, associated text: Commands that use coordinates (e.g. /teleport or /spawnpoint) add 0.5 to whole numbers when no decimal follows. This is so you appear centered over the block you appear on instead of at the edge or corner of it. For example, the number -33 would execute as -32.5, and 187 as 187.5. To prevent this behavior, add .0 (25.3, 90.0) after them, as these values are executed left as-is.
It is also possible to teleport minecarts or boats, with players in them. The command is /teleport @e[type=boat] <x> <y> <z>.