Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Вниз

Обрезать число   Найти похожие ветки 

 
snake-as ©   (2008-04-26 13:36) [0]

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


 
Denis__ ©   (2008-04-26 13:39) [1]

IntToStr(Copy(StrToInt(x),1,3));
Как то так.


 
Denis__ ©   (2008-04-26 13:40) [2]

то есть шучу:) Устал
StrToFloat(Copy(FloatToStr(x),1,3))
Вот как-то так


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

Какого типа результат нужен - строка или число?


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

>Denis__ ©   (26.04.08 13:39) [1]
Странно, где ты здесь увидел Int?


 
Anatoly Podgoretsky ©   (2008-04-26 13:42) [5]

Только строка, поскольку таких чисел не существует в процессоре


 
snake-as ©   (2008-04-26 13:43) [6]

Число..


 
snake-as ©   (2008-04-26 13:44) [7]

Не понял, в смысле не существует?


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

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


 
Anatoly Podgoretsky ©   (2008-04-26 13:47) [9]

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

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


 
snake-as ©   (2008-04-26 13:47) [10]

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


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


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

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

> snake-as ©   (26.04.08 13:36)  

uses math
function roundto


 
sniknik ©   (2008-04-26 13:48) [12]

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


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

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

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

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

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

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


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

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

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


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

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

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


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

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


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


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

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


 
sniknik ©   (2008-04-26 13:59) [18]

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


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


 
Denis__ ©   (2008-04-26 14:08) [19]

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


 
{RASkov} ©   (2008-04-26 14:16) [20]

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

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


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

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

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

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


 
{RASkov} ©   (2008-04-26 14:25) [22]

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

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


 
Anatoly Podgoretsky ©   (2008-04-26 19:13) [23]

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

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


 
korneley ©   (2008-04-26 22:38) [24]


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


 
Amoeba ©   (2008-04-26 22:48) [25]

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


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


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

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


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

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

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.007 c
15-1207740461
antonn (work)
2008-04-09 15:27
2008.05.25
вопрос по администрированию


2-1209890097
lead-in
2008-05-04 12:34
2008.05.25
2dbf


2-1208956311
Foo Fighters
2008-04-23 17:11
2008.05.25
как узнать результат запроса в ADOQuery?


9-1170430457
Ricks
2007-02-02 18:34
2008.05.25
И мои танчики покритикуйте :)


2-1209064894
Максим Е.
2008-04-24 23:21
2008.05.25
Можно ли получить такую информацию о файле...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский