в моем CSV-файле значения десятичной запятой это запятая. Так что я могу открыть CSV в Excel и Excel не будет форматировать мои значения на сегодняшний день.
Когда я открываю файл в своем собственном программном обеспечении и конвертирую String в float, значения не могут быть прочитаны: bool ok возвращает false.
QTextStream stream(&file);
QLocale locale = QLocale();
qDebug() << locale.decimalPoint(); //returns ","stream.setLocale(locale);
QString LineFromFile = stream.readLine();
QStringList DataFromRow = LineFromFile.split(";");
QList<float> values;
for (int i = 0; i < ValuesCnt; ++i){
values.append(DataFromRow.at(i).toFloat());
qDebug() << DataFromRow.at(i) << values.at(i); //returns e.g.: "700,1" 0
}
Вы устанавливаете локаль для потока, это предположительно не работает, потому что я не думаю, что локаль передается элементу объекта QStringList DataFromRow. Вы должны установить язык для них. Тем не менее, я бы предпочел использовать следующее:
for (int i = 0; i < ValuesCnt; ++i){
values.append(locale.toFloat( DataFromRow.at(i)));
Смотрите документацию qt QLocale :: toDouble()
Других решений пока нет …