purebasic.info

PureBasic forum
Текущее время: Вс янв 21, 2018 7:38 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: Вс мар 12, 2017 10:43 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 768
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Например
Код:
1
f.f = 11.1234


В интернете пишут, что никак, так ли это?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн мар 13, 2017 12:01 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11080
Благодарил (а): 4 раз.
Поблагодарили: 385 раз.
Не все так просто. Посчитай сколько цифр было изначально и сколько стало.
Код:
1
2
f.f = 11.1234
Debug f


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн мар 13, 2017 12:07 am 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Вт мар 03, 2015 4:20 pm
Сообщений: 24
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Можно так:
Код:
1
2
f.f = 11.1234
Debug Len(StringField(StrF(f), 2, "."))



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн мар 13, 2017 2:10 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 552
Благодарил (а): 2 раз.
Поблагодарили: 30 раз.
Пункты репутации: 9
перевести в строку и найдя позицию точки посчитать. :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт мар 14, 2017 10:47 am 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 201
Благодарил (а): 8 раз.
Поблагодарили: 26 раз.
Пункты репутации: 0
В каком случае могло понадобится такое действие? Если при пользовательском вводе, так "GetGadgetText" возвращает не более введенного, но если значение уже в памяти как результат какой-нибудь арифметической операции...


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср мар 15, 2017 3:25 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 552
Благодарил (а): 2 раз.
Поблагодарили: 30 раз.
Пункты репутации: 9
предположу что если это не строка а именно данные этого типа то они как минимум имеют порядок и мантиссу
а значит возможно точка уже определена каким не будь битом 0000000.00000000000000000000
зная эту позицию точки и количество бит под данные к примеру для дроби можно понять максимальное дробное
и потом типа до 10(один знак)-100(2)-1000(3) и т.д. знака после или до запятой:D


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт мар 16, 2017 10:28 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 768
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
благодаря Deomack что то получилось, не знаю насколько надежно :D
Код:
1
2
3
4
5
6
7
8
9
10
11
12
f.f = 11.1234
Debug StrF(f,4)
Debug StrF(f)
 
For i=0 To 10
  If Left(StringField(StrF(f), 2, "."),i) <> StringField(StrF(f,i), 2, ".") Or
     Val(Left(Mid(StringField(StrF(f), 2, "."),i+1),1)) = 0
    Break
  EndIf
Next
 
Debug "Count "+i



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт мар 16, 2017 11:34 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 201
Благодарил (а): 8 раз.
Поблагодарили: 26 раз.
Пункты репутации: 0
f.f = 11.7777
Код:
1
2
3
11.7777
11.7777004242
Count 1



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт мар 23, 2017 5:34 pm 
Не в сети
ассистент

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 24
Откуда: Украина Полтава
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Может я неправ, но по вопросу эта прога считает кол-во чисел(и букв если текстом) после точки.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
f$="123.123456789"; можно писать так для проверки.
;f$="123.пвирврваи";или так :-)
 
; это можно неиспользовать, но если тут указать 89 чисел после запятой то прога выдаст 89.
;f$=StrF(123.123456789,520); сама функция ограничена 512 знаками после запятой, хотя тут стоит 520 но ошыбки невыдает.
;Debug Len(f$);это для проверки длинны
 
;вот сама прога выдающая даные
f1=FindString(f$,".",1); поиск точки, тут можно запятую поставить если требуется.
Debug f1
Debug Mid(f$,f1+1,5000); тут показано все что после точки
Debug Len( Mid(f$,f1+1,5000) );вот длинна после точки
 


В Mid я конечно загнул 5000 знаков :shock:, достаточно и 10-20.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Yahoo [Bot] и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB