2013-12-10 7 views
2

Я новичок в QT. Я столкнулся с какой-то странной проблемой в значениях с плавающей запятой. Следующий код отображает окно сообщения с десятичными точками. т. е. 10,53QT: Float to QString

QMessageBox Msgbox; 
float num = 10.53; 
QString str = QString::number(num, 'g', 4); 
Msgbox.setText(str); 
Msgbox.exec(); 

В следующем коде отображается окно сообщения БЕЗ десятичных точек. то есть 1

QMessageBox Msgbox; 
float num = 120/77; 
QString str = QString::number(num, 'g', 4); 
Msgbox.setText(str); 
Msgbox.exec(); 

Почему цифры после десятичной точки игнорируются во втором фрагменте кода? Я изменил тип данных на double и qreal. Ничего не получилось.

+4

'поплавок Num = 120,0/77,0;' Вы делаете целое divisinon, и только отливать результат плавать ** после ** деление – jbh

ответ

1

добавления (поплавок) до того, как номера решали проблему. т.е. float num = (float)120/77;

+0

, вы должны правильно пометить свой собственный ответ, чтобы помочь будущим посетителям. – Andy

5

потому 120/77 делит 2 целых числа (в результате целого), а затем преобразовать, чтобы плавать

вам необходимо преобразовать числа, чтобы плавать перед тем делением

float a = 120, b = 77; 
float num = a/b; 
+0

Да. понял теперь. Спасибо – impulse

1
float num = 120.0/77.0; 

также будет работать, стандарт C.

Смежные вопросы