2016-07-25 4 views
0

Я хочу, чтобы изменить текст в число с плавающей запятой для расчета в Qtправильное значение входного сигнала с toFloat() в Qt

float test = ui.tableWidget->item(0, 1)->text().replace(",", ".", Qt::CaseSensitive).toFloat(); 

когда я типа 2,86, на самом деле я вижу test = 2.85999990 в отладке. Как я могу правильно получить то, что я набрал?

я могу использовать это для показа

qDebug() << QString::number(test, 'f', 2); 

Но я хочу значение для расчета, а не для показа.

+3

К сожалению, числа с плавающей запятой не дадут вам более точных результатов. Так они и есть - вы обычно получаете самое близкое число, которое может быть выражено в * числе чисел с плавающей запятой *. Я бы рекомендовал прочитать какую-нибудь википедию по причинам, почему (взгляните на уравнения там). Примечание: 'double' может дать вам несколько лучшие результаты. – hauron

+0

@hauron: спасибо. Да, я проверил с «double», но результат немного лучше, как вы сказали. Есть ли у нас какой-либо способ получить именно то, что мы хотим? – amateur

ответ

1

Поскольку @hauron уже сказал, что это формат, но нормальное поведение. Возможно, вы захотите прочитать сообщение this.

Кроме того, вы также можете взглянуть на другой ответ here. Использование некоторой дополнительной библиотеки может работать для вас, если это применимо.

+0

спасибо, я решил использовать 'double', результат после этого будет округлен, выглядит также нормально. – amateur