|
|
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
День добрый уважаемые. Ищу способ нестандартного форматирования числа, но напоролся на проблему преобразования через StrToFloat и FormatFloat . -Очень сильно страдает точность (особенно в Single теряется разряд в целой части что недопустимо). -Игнорирует пользовательский формат разделителя тысяч, и всегда выводит одинаковый результат Проверяю на Delphi 10.2 Tokyo, Win10x64 Может подскажете какую альтернативу искать? Мне нужно преобразовать число с нужным мне (пользовательским) форматированием Если ли способы из коробки, или придется заморачиваться с велосипедом и собственноручно расталкивать разряды? Заранее благодарствую. Пример: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. на выходе получаем: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 14:02:11 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
FormatFloat, Почитайте про представление вещественных чисел в двоичном коде, про вещественные типы данных, тогда, возможно, часть вопросов отпадёт сама собой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 14:27:04 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
goldmi45, Я ее читал, она рассказывает про хранение чисел в памяти, и что сопроцессор для обработки все числа приводит к Extended, но это не не про преобразование из строки в число и наоборот. И с каких пор Single - теряет точность в середине целой части при преобразовании из строки???!!! я бы понял если бы это была дробная часть, но это уже как-то... Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 14:40:50 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
Guest2013... И с каких пор Single - теряет точность в середине целой части при преобразовании из строки???!!! я бы понял если бы это была дробная часть, но это уже как-то... Код: plaintext 1. 2. Если читали, то может заметили, что мантисса у Single - 23 бита. Плюс еще 1 из-за формата хранения - как написано тут http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=374 , неформально говоря, к этому добавляется слева двоичное "1." получается 24 бита. 2 в 24 степени = 16777216. Вот у вас примерно 8 знаков точности. Так у вас и получилось - 8 знаков точно, а дальше уже погрешность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 15:03:08 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
Guest2013goldmi45, Я ее читал, она рассказывает про хранение чисел в памяти, и что сопроцессор для обработки все числа приводит к Extended, но это не не про преобразование из строки в число и наоборот. И с каких пор Single - теряет точность в середине целой части при преобразовании из строки???!!! я бы понял если бы это была дробная часть, но это уже как-то... Код: plaintext 1. 2. Нет никакой "целой" и "дробной" части. Иди, снова читай. ... ...Няшик, снова ты отжигаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 15:11:45 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
s62, Я Вас понимаю, но "точность" - относится к дробной части числа. А тут на ровном месте - 9 миллионов. (на мой взгяд, тут явно просматривается ошибка в функции преобразования строки в число). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 15:16:16 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
Guest2013s62, Я Вас понимаю, но "точность" - относится к дробной части числа. ...Неправильно. Вот представьте, у вас есть байт и нужно с его помощью работать с числом 12345. Точно не получится, хотя 12345 - не дробное, а целое число. Почему? Размерчик (байта) маловат, нужно больше байтjd, чтобы точно сохранить 12345. Аналогично и в вашей ситуации с Single. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 15:22:00 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
s62, *байтов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 15:22:45 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
Guest2013...Я Вас понимаю, но "точность" - относится к дробной части числа... Понедельник - день тяжёлый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 15:24:10 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
s62, согласен, тут целая часть вмещается в 6 байт а, не в 4 (виноват проглядел) остается 2-я часть вопроса, произвольный формат числа (есть мысли?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 15:29:45 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
FormatFloat-Игнорирует пользовательский формат разделителя тысячГде? FormatFloat Код: pascal 1. FormatFloat123`456`788`103`168,0000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 16:46:51 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
чччД...Няшик, снова ты отжигаешь? Нет, за то не стух 😉😉😉😉 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 16:58:38 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, я предполагал что FormatFloat такое умеет (но оказалось что нет): Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 17:52:49 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
Guest2013я предполагал что FormatFloat такое умеет (но оказалось что нет): Код: plaintext 1. 2. 3. Тебе точно исходное значение нужно во float хранить, а не в varchar/string ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 19:10:36 |
|
||
|
Почему FormatFloat игнорирует заданный формат вывода?
|
|||
|---|---|---|---|
|
#18+
Граур Станислав, Сохраняются все значения. упрощенно: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. - меняется число -> меняется текст и отображение - меняется текст -> меняется число и отображение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2017, 20:19:34 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39529446&tid=2041761]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
182ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 179ms |
| total: | 418ms |

| 0 / 0 |
