Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
212 / 210 / 137
Регистрация: 21.12.2015
Сообщений: 545
1

Потеря данных?

18.07.2016, 16:24. Показов 3775. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Скорее всего это не потеря данных, просто не знал как по-другому назвать.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
class Decompose
{ 
   public int GetParts(double n, out double frac)
   {
       int whole;
       whole = (int) n;
       frac = n - whole;
       return whole;
   } 
}
 
class UseOut 
{
    static void Main()
    {
        Decompose ob = new Decompose();
        int i;
        double f;
        double num = 10.124;
        i = ob.GetParts(num, out f);
        Console.WriteLine("Число равно " + num);
        Console.WriteLine("Целая часть числа равна " + i);
        Console.WriteLine("Дробная часть числа равна " + f);
    }
}
вывод в консоль :
Число равно 10.124\\норма
Целая часть числа равна 10\\все ок
Дробная часть числа равна 0.124000000000001\\???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2016, 16:24
Ответы с готовыми решениями:

Потеря данных при парсинге
Написал программку, которая парсит html:Webclient получает данные, которые парсятся, полученные...

WebClient.DownloadFileAsync и потеря данных (скачивание картинок с сервера)
Сохраняю картинки с сервера этим способом, их от 100 до 300. Скачивается быстро, все хорошо, но...

Потеря точности в double
Здравствуйте всем, возникла проблема при решении системы уравнений в потери точности. using...

Потеря точности с double
Всем привет, есть простой код: double t = 100*double.Epsilon; double t1 = (100 *...

11
13 / 13 / 4
Регистрация: 04.07.2016
Сообщений: 47
18.07.2016, 16:31 2
TuM0xA, скорее всего это из-за особенности хранения дробных чисел в памяти компьютера

Добавлено через 27 секунд
То есть вещественных
1
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
18.07.2016, 16:38 3
TuM0xA, это особенность типа double. С точностью у него проблемы. Из-за этого, кстати, для работы с финансовыми данными вместо него НАСТОЙЧИВО рекомендуется decimal.
1
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,717
18.07.2016, 16:40 4
о чем речь вообще?
10.124 - это константа, а 0.124000000000000000001 - это результат типа double, у которого после запятой помещается до 15 знаков.
или я что-то не понимаю, объясните.
0
212 / 210 / 137
Регистрация: 21.12.2015
Сообщений: 545
18.07.2016, 17:03  [ТС] 5
У числа с плавающей точкой 10.124 целая часть равна 10, а дробная 0.124 соответственно.Моя простая програмка должна была это показать, но вместо 0.124 она показала 0.124000000000001.Откуда взялась эта 0.000000000000001? Это мой косяк или косяк типа данных?
0
13 / 13 / 4
Регистрация: 04.07.2016
Сообщений: 47
18.07.2016, 17:12 6
TuM0xA, грубо говоря, косяк данных. На самом деле не косяк, а особенность.

Добавлено через 2 минуты
Вещественное число хранится в памяти компьютера особым образом, что порою приводит к неточностям.
0
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
18.07.2016, 17:57 7
MrDinja, может всё-таки double?
0
13 / 13 / 4
Регистрация: 04.07.2016
Сообщений: 47
18.07.2016, 18:05 8
EveKS, а у типа float разве не теряется точность? (Мне правда интересно).
0
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
18.07.2016, 18:54 9
Цитата Сообщение от MrDinja Посмотреть сообщение
грубо говоря, косяк данных. На самом деле не косяк, а особенность.

Вещественное число хранится в памяти компьютера особым образом, что порою приводит к неточностям.
Как-то абстрактно.
О написанном мной --
такой ответ, касался бы конкретного вопроса, а статья позволит автору понять почему.
0
13 / 13 / 4
Регистрация: 04.07.2016
Сообщений: 47
18.07.2016, 19:01 10
EveKS, в общем то верно говорите только, думаю, надо было статью на русском (хотя опять же мотивация учить английский), ввиду молодого возраста создателя темы
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,660
Записей в блоге: 14
18.07.2016, 19:54 11
На русском: http://www.softelectro.ru/ieee754.html
1
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,717
19.07.2016, 08:48 12
TuM0xA, можешь использовать вывод такого типа, для отображения числа нужной длинны
C#
1
Console.WriteLine("{0:0.000}", num);
2
19.07.2016, 08:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2016, 08:48
Помогаю со студенческими работами здесь

Потеря значений в массиве double
Доброго дня. Наткнулся на проблему с потерей значений в массиве, а конкретно при сортировках. Суть...

Потеря точности в Double.ToString()
Столкнулся с проблемой перевода double в строку, string sb = b.ToString();. Начиная с...

Арифметическая потеря значимости. Как отследить?
Добрый день! Изучаю тему преобразования типов данных и не могу найти ответ на вопрос. Известно,...

Потеря точности при преобразовании типов
Дан фрагмент кода: double a = Convert.ToDouble(Console.ReadLine()); double b =...


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

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