Why do I need to put 3.14f instead of 3.14 to disable all those warnings ? Is there a coherent reason reason for this ?
This is probably a standard in C world. Double is preferred since it's more precise and you probably won't see any performance differences. Read this post.