Die Warnung kommt vom automatischen Umwandeln, da dabei die Präzision teilweise verloren geht (keine Nachkommastellen). Mit der Warnung will dich der Compiler da extra drauf hinweisen. Um dem Compiler mitzuteilen, dass du das verstanden hast und das so gewollt ist, machst du da einfach die casts rein. Warnung weg, Compiler glücklich, Programmierer auch glücklich.
Wegen meinem Gemeckere wegen der C++-cast-operatoren: Ich sehe ein, dass die einen Sinn haben und die Unterscheidung ist auch recht sinnvoll, allerdings ist damit Mehrarbeit verbunden. Generell scheinen in der OOP-ist-heilig-Liga des öfteren die leichte Verständlichkeit bzw. Lesbarkeit flöten zu gehen (warum muss man sich mit for_each, begin und end rumschlagen, wenn man einen popligen String in Grossbuchstaben umwandeln will, wieso nicht einfach std::string::toupper. Tut doch keinem weh.)