Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Как округлить 550.4 = 600 ?
     
    
Добавлено: 08.05.05 20:08
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
    
 someone | Web-сайт: 123
      
       
  
Сабж.
 
    
Я знаю, что при этом юзается Round, но не помню как (мне даже sne примерчик кидал)
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 13
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа:
 sne
![]()
![]()
![]()
![]()
![]()
Разработчик Offline Client
ICQ: 233286456 
Вопросов: 34
Ответов: 5445
      
 Web-сайт:  
 Профиль |  | #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
       
    
       
  
А так нельзя?
 
    
Помоему, очень даже можно. 
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа:
 someone
![]()
![]()
Вопросов: 215
Ответов: 1596
      
 Web-сайт:  
 Профиль |  | #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-сайт:  
 Профиль |  | #7
      
Добавлено:  11.05.05 16:59
       
    
       
  
согласен. спасибо.
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа:
 Barsik
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Разработчик Offline Client
ICQ: 343368641 
Вопросов: 17
Ответов: 686
      
 Web-сайт:  
 Профиль |  | #8
      
Добавлено:  13.05.05 18:46
       
    
       
  
смотрите справку товарищи.
 
    
Функция 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.
Я тогда ошибся:
не

а

		
	  
			 
	
		 
    
       
    
Номер ответа: 10 
      
Автор ответа:
 Morpheus
![]()
![]()
![]()
![]()
Вопросов: 224
Ответов: 3777
      
 Web-сайт:  
 Профиль |  | #10
      
Добавлено:  13.05.05 22:40
       
    
       
  
Да чё то вы ребята только простыми и короткими методами хвалитесь. вот один понавороченее, чтобы не чкучали:
 
    
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-сайт:  
 Профиль |  | #11
      
Добавлено:  13.05.05 22:47
       
    
       
  
или вот так, покороче и для ещё более трудной читаемости кода :
 
    
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-сайт:  
 Профиль |  | #13
      
Добавлено:  14.05.05 18:42
       
    
       
  
не знаю, всё нормально работает, без стандартных функций. а если кому то не нравитсяя целочисленное деление то:
 
    
а)главное не то, что делишь, а чему присваеваешь значение;
б)это не главное, можно было в аналог Trunc'a и цикл замутить раз уж мы разрабатываем кривое и медленное решение 
)