реклама на сайте
подробности

 
 
> Как правильно выполнять округление до ближайшего?, RealView Compiler
sonycman
сообщение Dec 13 2009, 23:19
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Заметил, что при приведении типа с плав. точкой (float) к целочисленному значению, дробная часть просто выкидывается, или производится округление к нулю: было 4.8, стало -> 4.
А надо бы юзать округление до ближайшего целого -> 5.

Пришлось подключить хидер rt_fp.h и пользоваться тамошней функцией UINT _ffixu_r(float).

Может быть, режим округления можно изменить каким-то другим, более правильным путём, не прибегая к вызову функций внешней библиотеки?

И почему такой грубый способ округления юзается по умолчанию? Разве это правильно - 4.8 округлять до 4? cranky.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
tag
сообщение Dec 14 2009, 11:24
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 21-02-06
Пользователь №: 14 561



Цитата(sonycman @ Dec 14 2009, 02:19) *
Заметил, что при приведении типа с плав. точкой (float) к целочисленному значению, дробная часть просто выкидывается, или производится округление к нулю: было 4.8, стало -> 4.


В описании языка C четко сказано, что при приведении типа от вещественного к целочисленному дробная часть просто отсекается.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 14 2009, 11:44
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(tag @ Dec 14 2009, 15:24) *
В описании языка C четко сказано, что при приведении типа от вещественного к целочисленному дробная часть просто отсекается.

Я в курсе.
Имхо - очередная бяка стандарта sad.gif
Почему то, в тех редких случаях, когда приходится юзать плавучку, ни разу не приходила в голову мысль портить вычисления использованием столь грубого округления.
Всегда приходится обходить "чётко оговоренный" стандарт sad.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sonycman   Как правильно выполнять округление до ближайшего?   Dec 13 2009, 23:19
- - rezident   Приведение типа переменной и округление чисел, воо...   Dec 13 2009, 23:26
|- - aaarrr   Цитата(rezident @ Dec 14 2009, 02:26) Сам...   Dec 13 2009, 23:52
|- - rezident   Цитата(aaarrr @ Dec 14 2009, 04:52) Тольк...   Dec 14 2009, 00:43
|- - sonycman   Цитата(rezident @ Dec 14 2009, 03:26) При...   Dec 14 2009, 09:23
|- - demiurg_spb   Цитата(sonycman @ Dec 14 2009, 12:23) А в...   Dec 14 2009, 09:44
- - Microwatt   да, один клерк в банке наокруглял десятые доли цен...   Dec 14 2009, 01:22
- - dch   Цитата(sonycman @ Dec 14 2009, 02:19) Раз...   Dec 14 2009, 02:00
- - sonycman   demiurg_spb По идее да - floor округляет до целого...   Dec 14 2009, 09:53
|- - demiurg_spb   Цитата(sonycman @ Dec 14 2009, 12:53) В п...   Dec 14 2009, 10:54
- - baralgin   sonycman Операция отбрасывания дробной части лёгк...   Dec 14 2009, 13:16
|- - sonycman   Цитата(baralgin @ Dec 14 2009, 17:16) Ммм...   Dec 14 2009, 15:39
- - Sneg_87   предлагаю такой вариант: long a=5.6; //перед прео...   Dec 14 2009, 16:22
|- - aaarrr   Цитата(Sneg_87 @ Dec 14 2009, 19:22) long...   Dec 14 2009, 17:25
||- - Sneg_87   Цитата(aaarrr @ Dec 14 2009, 22:25) Умнож...   Dec 15 2009, 18:35
||- - aaarrr   Цитата(Sneg_87 @ Dec 15 2009, 21:12) Чем ...   Dec 15 2009, 18:35
||- - Sneg_87   Цитата(aaarrr @ Dec 15 2009, 23:35) А то,...   Dec 16 2009, 18:56
|- - demiurg_spb   Цитата(Sneg_87 @ Dec 14 2009, 19:22) ЗЫ п...   Dec 15 2009, 17:57
- - sigmaN   Sneg_87, такие "конструкции" в реальных ...   Dec 16 2009, 23:35


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 15:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016