Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/296: Рейтинг темы: голосов - 296, средняя оценка - 4.69
4 / 4 / 1
Регистрация: 25.07.2010
Сообщений: 23
1

Округление чисел.

13.08.2010, 12:18. Показов 56594. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем)
У меня есть вопрос, думаю наилегчайший.

C#
1
2
3
4
double n;
n = 34,678;
 
l4.Text = n.ToString("n");
Мне нужно что бы в лейбле выдало: "34".

Как откинуть запятую и всё что после неё?

Как откинуть всё что после первой цифры за запятой? "34,6"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.08.2010, 12:18
Ответы с готовыми решениями:

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

Округление чисел
Всем привет, стоит такая задача.. У нас есть 3 числа, допустим 345 78 25 нам нужно разделить...

Округление чисел по правилу
Всем доброго времени суток, столкнулся с такой проблемой - Нужно округлить число double, причем...

Скоростное округление чисел
Здравствуйте! Есть деление целых чисел, но результат должен быть не усечён, а округлён. Самое...

19
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 12:32 2
Alecs, почитай про String.Format()

C#
1
2
3
4
l4.Text=" \" "+n+" \". ";//1)
l4.Text=String.Format("{0:0}",n);//2)без точки
l4.Text=String.Format("{0:0.0}",n)//3)1 цифра после точки в том числе и 0
l4.Text=String.Format("{0:0.00}",n)//2 цифры после точки в том числе и 0
Добавлено через 11 минут
почитай про String.Format()

ссылка по String.Format()
1
4 / 4 / 1
Регистрация: 25.07.2010
Сообщений: 23
13.08.2010, 12:45  [ТС] 3
Спасибо большое)
0
66 / 66 / 5
Регистрация: 12.03.2008
Сообщений: 392
13.08.2010, 14:06 4
А еще метод ToString(); можно перегрузить в своем классе и делать там что душе угодно
0
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 16:52 5
Цитата Сообщение от Norby Посмотреть сообщение
А еще метод ToString(); можно перегрузить в своем классе и делать там что душе угодно
ну и в итоге все равно будешь в перегрузке использовать стрингФормат)))
0
Заблокирован
14.08.2010, 01:46 6
Цитата Сообщение от Alecs-- Посмотреть сообщение
Как откинуть запятую и всё что после неё?
this.Text = ((int)n).ToString();
Цитата Сообщение от Alecs-- Посмотреть сообщение
Как откинуть всё что после первой цифры за запятой? "34,6"
this.Text = String.Format("{0:f1}", n);
0
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
14.08.2010, 21:33 7
а есть еще замечательный класс Math

http://msdn.microsoft.com/ru-r... mbers.aspx


C#
1
2
3
4
5
double n;
n = 34.678;
n=Math.Round(n, 0);
 
l4.Text = n.ToString("n");

ну или совсем с извратом можно просто дабл переводить в инт,тогда дробная часть отвалится
2
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
14.08.2010, 22:17 8
SSV,
Terion,
Зачем делать кастинг товариСЧи?!т когда есть стрингФормат и неторебуется перевод в целые чиссла?!
побольше загрузить процессор элементарной задачей?)
0
Заблокирован
14.08.2010, 22:24 9
Цитата Сообщение от lifestyle Посмотреть сообщение
SSV,
Terion,
Зачем делать кастинг товариСЧи?!т когда есть стрингФормат и неторебуется перевод в целые чиссла?!
побольше загрузить процессор элементарной задачей?)
А за тем, что б ты спросил и заодно рисанулся.
Я считаю, что необходимо знать все возможные варианты, а для себя выбирать тот, который более оптимален в данном и конкретном случае.
1
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
14.08.2010, 22:51 10
=)))но это неправильный подход решения проблемы))я про кастинг только
0
Заблокирован
15.08.2010, 09:03 11
Цитата Сообщение от lifestyle Посмотреть сообщение
=)))но это неправильный подход решения проблемы))я про кастинг только
С какой радости?
0
Автор FAQ
Автор FAQ
1802 / 614 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
15.08.2010, 10:13 12
Ну а давайте теперь подумаем.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            double n = 34.678;
            string s = ((int)n).ToString();
            Console.WriteLine(s);
        }
    }
}
код ildasm
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       30 (0x1e)
  .maxstack  1
  .locals init ([0] float64 n,
           [1] string s,
           [2] int32 CS$0$0000)
  IL_0000:  nop
  IL_0001:  ldc.r8     34.677999999999997
  IL_000a:  stloc.0
  IL_000b:  ldloc.0
  IL_000c:  conv.i4
  IL_000d:  stloc.2
  IL_000e:  ldloca.s   CS$0$0000
  IL_0010:  call       instance string [mscorlib]System.Int32::ToString()
  IL_0015:  stloc.1
  IL_0016:  ldloc.1
  IL_0017:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_001c:  nop
  IL_001d:  ret
} // end of method Program::Main
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            double n = 34.678;
            string s = String.Format("{0:0}",n);
            Console.WriteLine(s);
 
        }
    }
}
ildasm
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       36 (0x24)
  .maxstack  2
  .locals init ([0] float64 n,
           [1] string s)
  IL_0000:  nop
  IL_0001:  ldc.r8     34.677999999999997
  IL_000a:  stloc.0
  IL_000b:  ldstr      "{0:0}"
  IL_0010:  ldloc.0
  IL_0011:  box        [mscorlib]System.Double
  IL_0016:  call       string [mscorlib]System.String::Format(string,
                                                              object)
  IL_001b:  stloc.1
  IL_001c:  ldloc.1
  IL_001d:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_0022:  nop
  IL_0023:  ret
} // end of method Program::Main
Но еще есть большое НО! использование первого варианта даст 35. А если автору необходимо иметь именно целую часть, не зависимо от того, что после запятой(без округления) то это второй метод. ИМХО, вы спорите в данном случае о разных вешах.
1
Заблокирован
15.08.2010, 10:35 13
Цитата Сообщение от Rockedit Посмотреть сообщение
Но еще есть большое НО! использование первого варианта даст 35. А если автору необходимо иметь именно целую часть, не зависимо от того, что после запятой(без округления) то это второй метод. ИМХО, вы спорите в данном случае о разных вешах.
Ты случаем не ошибся? Всё с точностью наоборот. Первый вариант отбрасывает дробную часть числа и дает 34, в второй 35. Проверять надо перед тем как писать собрался.
Миниатюры
Округление чисел.  
0
Автор FAQ
Автор FAQ
1802 / 614 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
15.08.2010, 10:43 14
Да я имел ввиду хронологию сообщений в теме..не доглядел что у меня наоборот
0
Заблокирован
15.08.2010, 10:47 15
ну а требовалось что?
Цитата Сообщение от Alecs-- Посмотреть сообщение
Мне нужно что бы в лейбле выдало: "34".
Вопросы еще есть?
0
Автор FAQ
Автор FAQ
1802 / 614 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
15.08.2010, 10:50 16
Да, ты читал что я написал? чужое то мы все видим!
ИМХО, вы спорите в данном случае о разных вешах.
ну а требовалось что?
Сообщение от Alecs--
Мне нужно что бы в лейбле выдало: "34".
Вопросы еще есть?
К чему это было написано, не понятно.
0
Заблокирован
15.08.2010, 10:53 17
Цитата Сообщение от Rockedit Посмотреть сообщение
А если автору необходимо иметь именно целую часть, не зависимо от того, что после запятой(без округления)
Это твои слова? НУ и что тебе еще не понятно?
0
Автор FAQ
Автор FAQ
1802 / 614 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
15.08.2010, 10:57 18
Это твои слова? НУ и что тебе еще не понятно?
А читать мы все в связке не умеем? Если каждое предложение отдельно рассматривать, то конечно можно по разному трактовать. Это вообщем то сказано было к тому, что спор ваш, по повод того, какая операция эффективней, безсмыслен в данном контексте.
0
Заблокирован
15.08.2010, 11:04 19
Цитата Сообщение от Rockedit Посмотреть сообщение
Это вообщем то сказано было к тому, что спор ваш, по повод того, какая операция эффективней, безсмыслен в данном контексте.
Вот с этим я соглашусь.
Ранее:
Цитата Сообщение от SSV Посмотреть сообщение
Я считаю, что необходимо знать все возможные варианты, а для себя выбирать тот, который более оптимален в данном и конкретном случае.
0
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
15.08.2010, 12:04 20
да вообще никто не спорил)все просто накидали вариантов, чтоб автор знал. мой вариант вообще не по теме, т.к округление даст 35.тем не менее, может пригодиться.вот и все)
0
15.08.2010, 12:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2010, 12:04
Помогаю со студенческими работами здесь

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

Нежелательное округление чисел при делении
double x; x = 9/2; textBox1.Text = x.ToString(); В текстбокс выводится... 4!!! Как? При делении...

Округление float чисел до двух знаков после запятой
Всем привет! Возникла такая проблема: Необходимо округлить число типа float до двух знаков....

Округление до 0,5
Уважаемые форумчане, подскажите как реализовать округление до 0,5. То есть, например: 4,3...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru