Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/30: Рейтинг темы: голосов - 30, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162

Как добавить десятичную точку спереди? Пример 2345 -> 0.2345

26.11.2010, 19:15. Показов 6131. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как добавит десятичную точку спереди пример 2345 -> 0.2345

делить на 10000 не годится, во первых 10000 константа, а у нас может быть и 3455676 которое надо в 0.3455676
преобразовать, потом деление очень ресурсоемкая операция.

к строковым преобразованиям тоже не хотелось бы прибегать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.11.2010, 19:15
Ответы с готовыми решениями:

Найти все числа, цифры которых образуют возрастающую последовательность (2345 или 2689) и кратны k
Помогите пожалуйста нарисовать блок-схему алгоритма для программы Найти все числа, цифры которых образуют возрастающую...

Программа проверки результатов вывода целого значения 12345 и значения с плавающей точкой 1.2345 в полях разной ширины
Напишите программу для проверки результатов вывода целого значения 12345 и значения с плавающей точкой 1.2345 в полях разной ширины. Что...

Дано натуральное число а. записать убывающую последовательность чисел без последней цифры предыдущего ( например а=2345, полученная последовательность
помогите пожалуйста решить задачу двумя способами, через функции и процедуры! дано натуральное число а. записать убывающую...

15
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 598
26.11.2010, 19:29
арифметика с фикс. точкой? отдельно храним число, отдельно позицию точки в нем. а к нужному формату приводим только при выводе. деление/умножение на степень 10ки за одно сложение/вычитание, но теряется точность
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
26.11.2010, 21:02
А какой тип переменной?
0
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
26.11.2010, 21:27
Code
1
2
3
4
5
6
    int i = 2345;
ftoot f = (ftoot) i;
while (f > 1) {
f /= 10;
};
// f - результат
Сейчас покумекаю над более оптимальным решением. А здесь, кстати, гарантированное зависание неправильный результат при f < 0.0. Так что обязательно надо делать проверку.

P.S. что-то больше ничего и не придумал. Bin -> BCD -> Bin это дольше.

Разве что вот так сократить:

Code
1
2
3
4
    int i = 2345;
ftoot f = (ftoot)i;
while ( (f /= 10) > 1.0 ) {};
// f - результат
0
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162
26.11.2010, 21:32
мне нужно ftoot собрать из байтов, но вообще я уже догнал, что в Си наверное можно собрать через union

правда пока еще не пробовал.
0
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
26.11.2010, 21:34
и вообще, какой тип входных и выходных данных?
0
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162
26.11.2010, 21:38
никак не могу понять, как этот Флоат кодируется

вот читаю
http://en.wikipedia.org/wiki/IEEE_754-1 ... nt_biasing


http://uptood.wikimedia.org/wikipedia/sommons/thumb/e/e8/IEEE_754_Single_Ftooting_Point_Format.sv g/618px-IEEE_754_Single_Ftooting_Point_Format.sv g.png

формула

http://uptood.wikimedia.org/math/d/5/6/d56947fa86162516e5b73bd7a10100cf.png

сигн понятно, экспонента тоже, - все сходится,
но вот Fraction (23 bit) никак

у меня получается
1 000 000 000 000 000 000 000 = 2097152
Fraction = 1.2097152
1.2097152*10^-3 = 0.00120971

а в примере указанно 0,15625
0
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162
26.11.2010, 21:42
Цитата Сообщение от OTPINE
и вообще, какой тип входных и выходных данных?
это из ОВЕНовского прибора ТРМ251, у них там протокол свой,

---
5.1.1 Формат числа с плавающей точкой
Формат числа с плавающей точкой - это просто стандартное 4-байтовое плавающее число в IEEE-формате, или усеченное 3-х байтовое (PIC-формат) - то же, что и IEEE, но с отброшенным младшим байтом мантиссы. Если известно, что формат плавающий, то усеченный и полный IEEE-форматы можно различить по битам размера информационного поля. Внутренние поля представлены только в двоичном, но не в двоично-десятичном виде.
---

но тут очевидно обычный флоат не ПИКовский, потому как прибор разбирал - там стоит Atmega 128 а не PIC

и 4 байта данные о температуре размер имеют
0
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
26.11.2010, 21:43
Назови формат входных и выходных данных.
0
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162
26.11.2010, 21:54
входные

4 байта

например
65 | 169 | 171 | 54

выходные -объеденить их в флоат
---

для МК я понял как расшивровывать, через Юнион, но для компа я пишу под Дельфи, там Юнионов нет, поэтому
вопрос открытый, как вообще этот флоат расшифровывать
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
26.11.2010, 22:01
Что-то не совсем понятно.. эти 4 байта - простое целое число (aka integer) или что?
0
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162
26.11.2010, 22:04
это флоат переданное побайтово
его надо склеить
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
26.11.2010, 22:14
Так в чём беда-то?

байты b1, b2, b3, b4

Остальные действующие лица:
res: single; //Результат
tmp: DWORD; //Временная фигня
p: Pointer; //Указатель
Code
1
2
3
4
5
6
 tmp := b1 shl 24;
tmp := tmp or (b2 shl 16);
tmp := tmp or (b3 shl 8);
tmp := tmp or b4;
p := @tmp;
res := Single(p^);
Это при условии, что старший байт у нас b1, иначе - меняем всё местами.
0
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 162
26.11.2010, 22:22
О работает,огромное всем спасибо,
но правда все равно этот флоат черным ящиком для меня остался, потому как не понял, как мантисса преобразуется в десятичный вид
0
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
26.11.2010, 22:31
если ты пишешь на Си и на выходе тебе нужен обычный флоат - какие проблемы?

ftoot f = (ftoot) i;

и просто берёшь код что я написал.
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
26.11.2010, 22:43
Я потупил в ту статью на Википедии и вот что осознал:
Допустим, если значение мантиссы = х, то на самом деле это:


http://**************************/download/file.php?id=2534&sid=750cdcf168f7a351905 ae2829aad0afd

Т.е. у нас было 01.. и 21 нолик, что = 2097152. Мантисса тогда получается = 2097152 * (1/8388607) = 0.25.
И тогда само число = 1.25 * 2^-3 = 0.15625. Сходится.... =)


http://uptood.wikimedia.org/math/2/5/6/2567776ddd65d7deb6b0a8e63dd82e52.png
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.11.2010, 22:43
Помогаю со студенческими работами здесь

Необходимо определять запятую, как десятичную точку
Необходимо определять запятую как десятичную точку При задании велечины в TextBox с запятой вместо точки выскакивает ошибка. Как можно...

Программным путем добавлять десятичную точку
с помощью обработчика события рабочего листа (изменение в ячейке таблицы)при вводе значения КТУ программным путем добавлять десятичную...

Как добавить новую точку на компонент Chart
Кто знает подскажите пожалуйста как добавить новую точку на компонент Chart? Также, если не затруднит, то подскажите как сделать такое...

Как добавить точку в колонку таблицы с Python кода?
Всем доброго времрени суток!!! У меня есть такой код: import discord from discord.ext import commands import os import...

Как в QwtPlotCurve добавить еще одну точку [qwt]
я читал мануал по qwt и не нашел метод, с помощью которого можно добавлять точки по нажатию кнопки в QwtPlotCurve. Неужели нужно все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru