В моем приложении есть следующий код, в котором мне нужно проанализировать строку и преобразовать ее в double
int i = ((QString)"294.4").toDouble() * 100;
Я должен рассматривать значение 29440 как значение i. Однако каждый раз, когда я это делаю, я получаю значение 29439. Я не уверен, почему это происходит, поскольку это происходит не всегда. например 294.1 294.2 294.3 работает нормально. 294.5 тоже нормально работает.
Я понимаю, что интерпретация чисел с плавающей запятой должна быть проблемой, и можно ожидать неопределенного поведения, но этот случай кажется очень простым.
Может ли кто-нибудь посоветовать мне, как надежно анализировать значения, чтобы он всегда давал мне точное значение, представленное его строковым эквивалентом?