Не получается ... числа с плавающей запятой ну никак не сокращаются... ответ с моим числом получился 29,3200006866 Вот ведь... даже на калькуляторе всё нормально посчиталось, а тут никак ... Буду что-то думать... лёгкий способ не прокатывает .... Или может есть ещё варианты ?
Я других не знаю, возможно есть специальная функция предназначеная именно для округления с заданой точностью, возможно и нет.
Все мои рассказы - http://ivin.3dn.ru/ Мои статьи - http://www.textsale.ru/u102051team102051.html
Возможно... Собственно мне это число нужно что-бы показать его как процент от суммы... Я уже готов его как текст показать... всё равно это только для показа .... Буду искать как перевести число в строку и обрезать как мне надо ...
Немного подумав, вышел из положения вот таким способом... В примере опишу как я отображаю дробное число с двумя знаками после запятой... Возможно много переменных натыкал, сделал так чтобы понятно было... Может кому пригодится...
Code
10 a# = 29,0322589874 20 b#= int(a# * 100) 30 c$ = str$(b#) 40 d = len(c$) 50 if d =3 then p1$ = left$(b$,1):p2$ = right$(b$,2) 60 if d =4 then p1$ = left$(b$,2):p2$ = right$(b$,2) 70 if d =1 then p1$ = left$(b$,1):p2$ = "0" 80 if d =5 then p1$ = left$(b$,3):p2$ = "0" 90 print p1$,",",p2$,"%"
10 - присваиваем a# дробное число 20 - умножаем дробное число на 100 и округляем b#=2903 30 - переводим полученное число переводим в текстовый формат и записываем в переменную c$ 40 - Узнаём кол-во символов в строке, записываем в переменную d 50 - Условие если переменная d = 4 то в переменную p1$ записываем 2 левых символа это будет целое число в p2$ - 2 символа справа это будет дробное число
60 - тоже, но если d = 3 - 1 символ слева и 2 справа - на случай если число окажется к примеру 3,85 70 - тоже, но если число нулевое - будет 0,0% 80 - тоже, если 100, будет 100,0% 90 - вывод результата на экран
То в b получается каша? (с символом деления я могу и ошибиться, посавь тот что нужно)
Quote (quadrathell)
Узнаём кол-во символов в строке, записываем в переменную d
d=4 a>10 d=3 a>=0 a<10 d=2 a>=0.1 a<0 d=1 a<0.1 С такими условиями не понадобится дополнительная операция над строкой, а значит экономия времени. Все мои рассказы - http://ivin.3dn.ru/ Мои статьи - http://www.textsale.ru/u102051team102051.html
Ivin, получается я дробное число умножаю на 100 этим самым сдвигаю запятую на две цифры, после округления всё после точки удаляется.... Затем в D я записываю количество символов в получившейся строке... естественно если 3 символа, то это число вроди 3.25 .... 5.87 и т.д если 4 символа, то типа 25.85 .... 38.00 если 5 символов то это 100 ... в моём случае проценты и выше 100 быть не может 1 символ это круглый ноль ... он и в африке ноль
Quote (Ivin)
d=4 a>10 d=3 a>=0 a<10 d=2 a>=0.1 a<0 d=1 a<0.1 С такими условиями не понадобится дополнительная операция над строкой, а значит экономия времени.
Затем в D я записываю количество символов в получившейся строке...
вот, а и я о том же. Ты пользуешся функциями работающими со строкой, это требует гораздо больше процесорного времени чем простая проверка вхождения числа в определенную область.
Quote (quadrathell)
после округления всё после точки удаляется....
Вот, и что теперь мешает разделить число на 100? у нас было 23,059384579834 умножили на 100 получили 2305,9384579834 округлили 2305 разделили на 100 23,05 Я про это в первом посте писал.
Quote (Ivin)
Тут, round функция отброса дробной части, X и Y переменные.
функция отброса дробной части работает аналогично округлению, только не меняет целую часть числа. В делфи это round, округление abs. Я писал пример по делфи.
Quote (quadrathell)
естественно если 3 символа, то это число вроди 3.25 .... 5.87 и т.д если 4 символа, то типа 25.85 .... 38.00 если 5 символов то это 100
Так если ты это и сам знаешь почему строкой пользуешся? Строкой и дольще и тормозить больше будет, чем с обычными условиями.
Quote (quadrathell)
вот скрин результата случайных дробных чисел:
А он то тут при чем?
Quote (Ivin)
d=4 a>10 d=3 a>=0 a<10 d=2 a>=0.1 a<0 d=1 a<0.1
т.е. если a>10 то d=4 если a>=0 и a<10 то d=3 и т.д. вот что я имел в виду.
Все мои рассказы - http://ivin.3dn.ru/ Мои статьи - http://www.textsale.ru/u102051team102051.html
Спасибо за советы... скоро выложу то что нахимичил ... Это не игра, а программка для анкетирования и подсчёта результатов... если окажется полезной, то продолжу, а нет, то забью .... Сырой версией уже пользуются... а я для себя навыка немного поднял )
не уверен что в дарке есть схожая по действию функция, хотя, я могу и ошибаться.
Все мои рассказы - http://ivin.3dn.ru/ Мои статьи - http://www.textsale.ru/u102051team102051.html
это примерно то что я описывал, только в дельфях на много короче
угу, только тебе пришлось ручками разделять число, а тут просто ставиш точку после второго символа. ЗЫ неужели действительно в дарке нет функций для работы со строками? Вставка подстроки в строку, удаление символов (начиная с такого-то и по такой-то) и т.д.
Все мои рассказы - http://ivin.3dn.ru/ Мои статьи - http://www.textsale.ru/u102051team102051.html