Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » обрезать SINGLE


обрезать SINGLE

Сообщений 1 страница 15 из 15

1

Господа, как отрезать от single лишние цифры после запятой? Делаю даталоггер с записью на sd карту и 9 цифр после запятой мне многовато, двух хватит.

Код:
P = Getadc(0)
U = P * 0.003

переменная U - single , число очень уж длинное получается

0

2

FUSING
FUSING returns a formatted string of a single value.

Syntax
target = FUSING(source, "mask")

target
The string that is assigned with the formatted string.

source
The source variable of the type SINGLE that will be converted

mask
The mask for formatting the string.

The msk is a string constant that always must start with #.
After the decimal point you can provide the number of digits you want the string to have:

#.### will give a result like 123.456. Rounding is used when you use the # sign. So 123.4567 will be converted into 123.457

When no rounding must be performed, you can use the & sign instead of the # sign. But only after the DP.
#.&&& will result in 123.456 when the single has the value 123.4567
 
When the single is zero, 0.0 will be returned, no matter how the mask is set up.

0

3

Большое человеческое спасибо

Код:
 P = Getadc(0)
U = P * 0.003
U_1 = Fusing(u , "#.##")

результат-
0.029999969  - 0.03
  0.029999969  - 0.03
  0.029999969  - 0.03
  0.029999969  - 0.03
  0.029999969  - 0.03
  0.062999962  - 0.06
то что надо.

Тока про "Единую Россию"  не понял.

0

4

про ЕР - это у меня подпись такая, года 3-4 назад такую поставил :)

0

5

Если нет необходимости в форматировании лучше так:

CONFIG SINGLE = SCIENTIFIC , DIGITS = value   

Ограничение количества расчитываемых символов после запятой.

Ускоряется работа, меньше исходник.

+2

6

Это вашпе супер, ещё проще. Спасибо и вам.
Спасли от перелома мозга.

0

7

да, не использовал - спасибо, Александр

0

8

На здоровье!

Не надо ломать голову, надо спрашивать, здесь (пока) за это деньги не берут!

0

9

С Config Single не всё так просто , одна и та же переменная выводится в терминал и пишется на SD карту.
http://se.uploads.ru/t/DOAgI.jpg

Код:
P = Getadc(0)
U = P * 0.003


  Open File For Append As #1
 Print #1 , "  " ; U ;
 Print #1
 Close #1
 Print U
 Print "  "
Код:
 Config Single = Scientific , Digits = 2

Dim U As Single

Отредактировано aleksey (2015-03-23 12:54:34)

0

10

http://se.uploads.ru/RWLH9.jpg
число хранится в первоначальном виде

0

11

сегодня опробовал CONFIG SINGLE = SCIENTIFIC  -- странно!

без "обрезания"  = 1680 байт,
добавил эту команду = 2108 байт
без этой команды, но с Fusing = 1884 байта

у кого какие результаты?

Отредактировано Александр Д. (2015-05-18 09:14:57)

0

12

Проблема с CONFIG SINGLE = SCIENTIFIC таки есть,  обрезаю до 2 после запятой сравниваю с другой, условие не выполняется.

а=1.005
b=1.000

if a=b then ...

пятерку видит.. мож кто чего подскажет?

0

13

виноват.. плохо смотрел,  пока решил проблему умножением..

0

14

Если скорость не важна, можно извращнуться математикой, к примеру: умножить на 100, откинуть int-ом дробную часть и снова поделить на 100. :D А дальше сравнивать.

0

15

так и сделал  8-)

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » обрезать SINGLE