Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Как округлить 550.4 = 600 ? Добавлено: 08.05.05 20:08  

Автор вопроса:  someone | Web-сайт: 123
Сабж.
Я знаю, что при этом юзается Round, но не помню как (мне даже sne примерчик кидал)

Ответить

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

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 08.05.05 20:21
msgbox round(550.4 / 100, 0) * 100

Ответить

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



Вопросов: 0
Ответов: 1066
 Профиль | | #2 Добавлено: 08.05.05 20:24
Если нужно округдение к ближайшей сотне, то
CLng(550.4 / 100) * 100

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 08.05.05 22:32
А так нельзя?

Msgbox Round(dblNumber, -3)


Помоему, очень даже можно. :)

Ответить

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



Вопросов: 215
Ответов: 1596
 Web-сайт: 123
 Профиль | | #4
Добавлено: 09.05.05 11:24
Всем спасибо
2Noviks
нет, так нельзя :((
я пробовал

Ответить

Номер ответа: 5
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #5 Добавлено: 10.05.05 20:12
Можно так:

int x;
float y;
y = 550.4;
x = int(y / 100.0 + 0.5);

Ответить

Номер ответа: 6
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #6 Добавлено: 10.05.05 20:12
То есть так:

int x;
float y;
y = 550.4;
x = int(y / 100.0 + 0.5) * 100;

Ответить

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



Вопросов: 215
Ответов: 1596
 Web-сайт: 123
 Профиль | | #7
Добавлено: 11.05.05 16:59
согласен. спасибо.

Ответить

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



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #8
Добавлено: 13.05.05 18:46
смотрите справку товарищи.

Round(Number [,NumDigitAfterDecimal])

Функция Round служит для округления чисел до заданной точности(число значащих цифр в дробной части).
Функция Round(Number,2) эквивалентна функции Format(Number,"#.##";)

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #9 Добавлено: 13.05.05 22:08
Кстати, хотите прикол?
550.5 окрудлить до сотых: будет 500
:)))

А чтоб было 600, надо 555 округлять...

P.S.
Я тогда ошибся:
не
Msgbox Round(dblNumber, -[B]3[/B];)

а
Msgbox Round(dblNumber, -[B]2[/B];)

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #10
Добавлено: 13.05.05 22:40
Да чё то вы ребята только простыми и короткими методами хвалитесь. вот один понавороченее, чтобы не чкучали:

Private Const n As Double = 550.4
Dim t As Long
Dim r As Long

Sub Main()
t = n \ 100
If n - t * 100 >= 50 Then
    r = (t + 1) * 100
Else
    r = t * 100
End If
MsgBox r
End Sub

Ответить

Номер ответа: 11
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #11
Добавлено: 13.05.05 22:47
или вот так, покороче и для ещё более трудной читаемости кода :

Private Const n As Double = 550.4

Sub Main()
MsgBox ((n \ 100) - (n - (n \ 100) * 100 >= 50)) * 100
End Sub

Ответить

Номер ответа: 12
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #12 Добавлено: 14.05.05 13:27
Как ты собираешься к переменной Double применять целочисленное деление? Тут все равно неявные преобразования будут.

Ответить

Номер ответа: 13
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #13
Добавлено: 14.05.05 18:42
не знаю, всё нормально работает, без стандартных функций. а если кому то не нравитсяя целочисленное деление то:

а)главное не то, что делишь, а чему присваеваешь значение;
б)это не главное, можно было в аналог Trunc'a и цикл замутить раз уж мы разрабатываем кривое и медленное решение :-))

Ответить

Страница: 1 |

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



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