Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обрезать число


Страницы:   1 2

snake-as ©   (2008-04-26 13:36:00) 

Здравствуйте, подскажите, пожалуйста, как "обрезать" число. Т.е. вместо 0.999999 получить, например 0.99.. Только именно обрезать, а не округлить.. Спасибо заранее..


{RASkov}   (2008-04-27 10:40:00) [1]

> [26] Denis__ ©   (27.04.08 10:26)
> как сделать, чтобы работало всегда?

Я думаю, что наверное только на бумажке карандашом можно всегдаточно нарисовать вещественное число.... хотя.... может и ошибаюсь...


Denis__   (2008-04-27 10:26:00) [2]


> {RASkov} ©   (26.04.08 14:25) [22]

Да, согласен, спасибо. Но в школах именно так учат. Причём, как учат делать через зад, так и учат через зад:) Ну да это лирика. Тогда интересует вопрос, как сделать, чтобы работало всегда?


Amoeba   (2008-04-26 22:48:00) [3]

Автору вопроса читать до полного просветления:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374


korneley   (2008-04-26 22:38:00) [4]


>...Что то с войной связаное.
 
"Brothers in arms" (c) Mark Knopfler


Anatoly Podgoretsky   (2008-04-26 19:13:00) [5]

> Восхищенный  (26.04.2008 14:16:21)  [21]

Ну мы то знаем, как такие называются. Что то с войной связаное.


{RASkov}   (2008-04-26 14:25:00) [6]

> [19] Denis__ ©   (26.04.08 14:08)
> в чём я не прав?

И кстати как вариант твоей неправоты:
С Copy можешь "обломаться" с таким подходом... хоть это и не относиться к твоему "коду" в [2] но если посмотришь [18] то наверное поймешь о чем я...


Восхищенный   (2008-04-26 14:16:00) [7]

> Denis__ ©   (26.04.08 14:08) [19]

> В чём я не прав?

Не в том, что не знаешь особенностей машинной арифметики вещественных чисел. А в том, что споришь о том, чего не знаешь.


{RASkov}   (2008-04-26 14:16:00) [8]

> [19] Denis__ ©   (26.04.08 14:08)
> в чём я не прав?

Потому как через зад делаешь... Хоть это и тоже результат, ...но ты согласишься на операцию с гландами тебе, с такимиже понятиями как и у тебя, доктором? ;)


Denis__   (2008-04-26 14:08:00) [9]

Ничего не вижу. Дэлфи под рукой нет. Но всё должно работать, в чём я не прав? и проверку сделать - если число меньше 0.001 то вернуть 0 и всё.


sniknik   (2008-04-26 13:59:00) [10]

> Всё нормально будет работать.С лубыми числами. А не
поосторожнее с "обещаниями для всех" ("лубыми")
var
 s: single;
begin
 s:= 0.1;
 ShowMessage(FloatToStr(s));
end;


что видиш при выполнении?


ага   (2008-04-26 13:58:00) [11]


> Denis__ ©   (26.04.08 13:53) [15]
>
> Всё нормально будет работать.С лубыми числами. А не

Нет уж :) А как быть с 2,999E+22 например ?


ага   (2008-04-26 13:55:00) [12]

[11] и еще SetDefaultCW - и всех делов...


Denis__   (2008-04-26 13:53:00) [13]

Всё нормально будет работать. С лубыми числами. А не

> Но не со всяким числом это получится, имей в виду. Общего
> решения тут нет, потому что многие десятичные числа в двоичном
> виде дают бесконечную дробь.


Anatoly Podgoretsky   (2008-04-26 13:52:00) [14]

> sniknik  (26.04.2008 13:48:12)  [12]

Денежный тип это разновидность BCD, только ограниченая, всегда 4 знака после запятой. Там можно представить и ,9900 и ,9999


Восхищенный   (2008-04-26 13:49:00) [15]

> Denis__ ©   (26.04.08 13:40) [2]

Больше так не шути. И советов таких не давай. Это ж надо такое придумать - перегонять число в число через строку. Из Тулы в Рязань через Камчатку.

> snake-as ©   (26.04.08 13:43) [6]

Например, так: X := Int(Х * 100) / 100.

Но не со всяким числом это получится, имей в виду. Общего решения тут нет, потому что многие десятичные числа в двоичном виде дают бесконечную дробь.


sniknik   (2008-04-26 13:48:00) [16]

> Забудь или переходи на BCD
денежный тип... тоже подойдет.


ага   (2008-04-26 13:48:00) [17]


> Anatoly Podgoretsky ©   (26.04.08 13:42) [5]
>
> Только строка, поскольку таких чисел не существует в процессоре

Эээ.... в каком смысле?

> snake-as ©   (26.04.08 13:36)  

uses math
function roundto


snake-as   (2008-04-26 13:47:00) [18]

Да, теперь понял.. Немного туплю просто.. Ну все равно спасибо всем!


Anatoly Podgoretsky   (2008-04-26 13:47:00) [19]

> snake-as  (26.04.2008 13:43:06)  [6]

Забудь или переходи на BCD


ПостОвый терминатор   (2008-04-26 13:45:00) [20]

> snake-as ©   (26.04.08 13:43) [6]
Преведи сначала в строку, а затем в число.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо