0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 4
1

Ограничить количество знаков после запятой

26.05.2012, 21:18. Показов 187562. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Очень нужно обрезать число на пример 1.5453 до 1.545(именно обрезать), тем создано не мало, но решение так и нет, пробовал String.Format("0:F3"), почему то округляет, хоть сам функцию пиши...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2012, 21:18
Ответы с готовыми решениями:

Ограничить количество знаков после запятой
Помогите решить такую проблему: при вычислении какого-либо значения мне требуется чтобы не было...

Ограничить количество знаков после запятой
Добрый день Пусть имеется код: double a = 1/131231413; label16.Text = a.ToString(); В label16...

Задать количество знаков после запятой
в общем, я знаю, что количество знаков после запятой можно отделить при выводе так: double a =...

Как задать количество знаков после запятой
Как задать количество знаков после запятой? Добавлено через 13 минут Все, нашел Math.Round(x,...

13
170 / 170 / 56
Регистрация: 10.07.2011
Сообщений: 251
26.05.2012, 21:25 2
Лучший ответ Сообщение было отмечено aleks_pilipenko как решение

Решение

C#
1
Math.Round(1.5453, 3)
4
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 4
28.05.2012, 08:03  [ТС] 3
Спасибо за совет, попробую, но разве Round не переводиться как округление??
0
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
28.05.2012, 08:23 4
Под обрезать вы понимаете, что число 1.5456 тоже должно перевестись в 1.545, а не округлится до 1.546? Тогда можете сделать так:
C#
1
2
double d = 1.5456;
Console.WriteLine(d - d % 0.001);
3
2 / 2 / 0
Регистрация: 20.03.2017
Сообщений: 16
15.06.2014, 19:12 5
C#
1
x.ToString("0.00")
как пример
C#
1
Console.WriteLine("x={0}  S={1} Y={2}", x.ToString("0.00"), Math.Round(sx, 4), Math.Round(sy, 4));
2
18 / 18 / 13
Регистрация: 19.11.2014
Сообщений: 156
15.01.2015, 20:53 6
Подключаешь
C++
1
2
#include <iomanip> 
#include <cmath>
и при выводе числа пишешь вот так:
C++
1
cout << fixed << setprecision(3) << x << endl;
2
458 / 402 / 153
Регистрация: 23.01.2011
Сообщений: 1,054
15.01.2015, 20:55 7
Цитата Сообщение от posol_7 Посмотреть сообщение
Подключаешь
C++
1
2
#include <iomanip> 
#include <cmath>
и при выводе числа пишешь вот так:

C++
1
cout << fixed << setprecision(3) << x << endl;
Это не C#!!!!!!! это С++
0
18 / 18 / 13
Регистрация: 19.11.2014
Сообщений: 156
15.01.2015, 21:04 8
Цитата Сообщение от Prog_maker Посмотреть сообщение
Это не C#!!!!!!! это С++
lol не хорошо как-то получилось)) виноват((
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
16.01.2015, 16:31 9
RokkoT, без округления:
C#
1
2
double num = 1.5456;
Console.WriteLine(Regex.Match(num.ToString(), @"\d+([.,]\d)?\d?").Value);
2
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
26.12.2016, 10:55 10
Смотрю, что кому-то это помогает, поэтому вот вариант более правильный:
C#
1
Math.Round(number - number % (double)(Math.Pow(0.1, (double)accuracy)), accuracy);
Собственно его по сути и предложил Lasur.
0
0 / 0 / 0
Регистрация: 06.02.2018
Сообщений: 1
06.02.2018, 11:01 11
C#
1
Math.Truncate(1.5453 * 1000) / 1000;
0
11 / 11 / 3
Регистрация: 03.12.2017
Сообщений: 20
19.03.2018, 09:57 12
Если ещё кому надо. Сделал серьёзный парсер) Хоть и жестокий, но полностью рабочий.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
             //Здесь записывается само число
            double d1 = 5.54688899999;
            string d2 = d1.ToString();
            string[] d3 = d2.Split(',');
            string d4 = d3[0] + ',';
            for(int i = 0; i < d3[1].Length; i++)
            {
/*
Число 2 - количество символов после запятой. Отсчитывается от нуля, поэтому вместо три - 2
*/
                if(i <= 2)
                {
                    d4 += d3[1][i];
                }
                else
                {
                    break;
                }
            }
            //Тут у нас записывается готовое число
            double result = double.Parse(d4);
0
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
19.03.2018, 11:00 13
Ну раз уж откопали тему и начали пьянку:
C#
1
2
3
4
5
6
7
8
static class DoubleExtensions
{
    public static double Truncate(this double value, int precision)
    {
        var p = 1 / Math.Pow(10, precision);
        return value - (value % p);
    }
}
C#
1
2
double value = 12.243465474;
double truncated = value.Truncate(4);
Но все равно надо учитывать, что при арифметических операциях возможны ошибки округления, так что вышеуказанный код может вернуть 12.243400000000001
0
2 / 2 / 0
Регистрация: 25.04.2016
Сообщений: 1
12.05.2018, 00:07 14
C#
1
2
3
            double pi = 3.141592;
            Console.WriteLine(pi);
            Console.WriteLine(pi.ToString("F" + 3));
Ограничить количество знаков после запятой
2
12.05.2018, 00:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2018, 00:07
Помогаю со студенческими работами здесь

С клавиатуры задать количество знаков после запятой
Есть такой код: static void Main(string args) { double f, n = 1, x; ...

Деление переменных, количество знаков после запятой
Здравствуйте всем, если 163/201 выходит 0,8109452. Как можно сделать так чтобы после запятой...

Отступить нужное количество знаков после запятой
Здравствуйте Форумчане ! Столкнулся с проблемой при написании алгоритма префиксного построения...

Действия над дробными числами и количество знаков после запятой
помогите пожалуста разобратся. написал прамму для решения СЛАУ тип всех переменных стоит int. в...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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