Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: округлить число в большую сторону Добавлено: 09.02.07 15:16  

Автор вопроса:  Dima
как округлить число в большую сторону например:
1.2 =2
1.5 =2
1.9 =2
спасибо

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 pas



Вопросов: 0
Ответов: 1
 Профиль | | #1 Добавлено: 09.02.07 15:31
Например так:
Public Function RoundUp(a As Double) As Long
If a - Round(a) > 0 Then
    RoundUp = Round(a) + 1
Else
    RoundUp = Round(a)
End If
End Function

Ответить

Номер ответа: 2
Автор ответа:
 Dima



Вопросов: 2
Ответов: 2
 Профиль | | #2 Добавлено: 09.02.07 15:32
а еще как можна

Ответить

Номер ответа: 3
Автор ответа:
 Dima



Вопросов: 2
Ответов: 2
 Профиль | | #3 Добавлено: 09.02.07 15:32
а еще как можна

Ответить

Номер ответа: 4
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #4 Добавлено: 09.02.07 16:37
А че те еще нужна?
r=iif(a-int(a)<>0,1,0)+int(a)

Ответить

Номер ответа: 5
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 09.02.07 19:44
ужос

.NET:
Math.Ceiling


PS
Да, да, знаю - в .NET делают те фичи которые в Java были 10 лет назад :)

Ответить

Номер ответа: 6
Автор ответа:
 DimDoc



Вопросов: 21
Ответов: 104
 Профиль | | #6 Добавлено: 13.02.07 04:06
мой вариант:
Public Function myUP(x As Double) As Long
If x \ 1 > x Then x = x \ 1
If x \ 1 < x Then x = x \ 1 + 1
myUP = x
End Function

наверное тоже, что написал PAS
Public Function RoundUp(a As Double) As Long
If a - Round(a) > 0 Then
    RoundUp = Round(a) + 1
Else
    RoundUp = Round(a)
End If
End Function

Ответить

Номер ответа: 7
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 13.02.07 17:22
Да че вы мутите? =)
a=Fix(a)

Ответить

Номер ответа: 8
Автор ответа:
 DimDoc



Вопросов: 21
Ответов: 104
 Профиль | | #8 Добавлено: 14.02.07 15:12
Поистине - всё гениальное просто!
Спасибо большое... Но надо не в меньшую круглить, а в большую сторону.
Тогда выходит: a = Fix(a) + 1

Ответить

Номер ответа: 9
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #9 Добавлено: 14.02.07 16:50
Ну да :)

Тогда так
a = Fix(a) + Sgn(a)
для отрицательных тоже в "большую"

Ответить

Номер ответа: 10
Автор ответа:
 DimDoc



Вопросов: 21
Ответов: 104
 Профиль | | #10 Добавлено: 14.02.07 22:21
AgentFire SUPERSTAR!!!
Здорово.
всёже сомнение гложет...
думаю: -1 > -2
тогда для отрицательных: a = Fix(a)
а для положительных: a = Fix(a) + sng(a)
или: a = Fix(a)+ 1 (так проще)

ps.: Видели как меня... за плавающую точку...
хотел вас просить помочь, а Вы уже ответили!
Я ведь математику 25 лет назад изучал.
Молодец Fever. Ответил так, что и мне, дураку ясно стало.
Важно, что любые способы округления помогают!
даже Format(x, "0.00";) срабатывает.
интересно, что переменная, объявленная как Currency - тоже не приводит к ошибке в этом цикле.
как же правильнее не накапливать ошибки вычисления?
Спасибо за помощь!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам