Вход | Регистрация


1С:Предприятие ::

Метки: 

Занимательная математика ... почему так?

Я
   lamme
 
01.12.17 - 12:51
вот формула
http://clip2net.com/s/3PXPANF

в отладичке итоги ..
т.е. 416,48 /3,5*3,5 = 416,4800000000000000000000000001

это вот как так?
 
 
   FIXXXL
 
1 - 01.12.17 - 12:54
(0) а так  416,48 /(3,5/3,5)
   FIXXXL
 
2 - 01.12.17 - 12:54
(1) + ну и почитай про порядок выполнения действий что ли
   EugeniaK
 
3 - 01.12.17 - 12:55
И что тут странного?

416,48 на 3,5 не делится. Получается длинный хвост цифр. Кусочек хвоста округляется и обрезается.
   lamme
 
4 - 01.12.17 - 12:55
   lamme
 
5 - 01.12.17 - 12:56
а так
СуммаВДокументе / (КоличествоВдокументе/  Стртовар.КоличествоВМашине) = 416,18 ровно
   Волшебник
 
Модератор
6 - 01.12.17 - 12:56
2*2 = 3.99999999999999999999999999999999999999998
   Вафель
 
7 - 01.12.17 - 12:56
Поэтому всегда нужно сначала умножать, а потом уже делить
   lamme
 
8 - 01.12.17 - 12:58
(2)
сначала деление умножение, потом сложение вычитание
в данном примере

Исходное число поделили и умножили на одно и тоже число.
И в итоге - полуилис нечто третье

это все равно как
4/2*2 =4.00000000000000000000000000000000000001
   lamme
 
9 - 01.12.17 - 12:58
(7)
почему

я может в школе чего пропустил ...
   Вафель
 
10 - 01.12.17 - 12:59
(9) Ибо округление. Компьютер не умеет работать с бесконечными дробями
 
  Рекламное место пустует
   lamme
 
11 - 01.12.17 - 13:00
короче .. один случай на 1000.
и он выпал
   wondkind
 
12 - 01.12.17 - 13:02
(11) и еще выпадет
   Волшебник
 
Модератор
13 - 01.12.17 - 13:02
(9) Ты пропустил компьютерную арифметику.

Рассмотрим пример. Если в простых дробях (1/3) х 3 = 1, то в десятичных 0.3333 х 3 = 0.9999.
В двоичной машинной арифметике происходит аналогичная ситуация. Но если человек сознает, что результат 0.9999... - та же единица, то компьютер этого не понимает. В результате в компьютерной арифметике (1 / 3) х 3 не равняется единице.

https://znanija.com/task/14874390
   serpentt
 
14 - 01.12.17 - 13:03
(7) Вы не правы
"Выполнение действий по порядку слева направо объясняется тем, что у нас принято вести записи слева направо"
а не сначало умножение а потом деление
По вашей логиге ответ в примере 6:2*8:3 будет неправильным
   Вафель
 
15 - 01.12.17 - 13:04
(14) не понял что ты хотел сказать.
   Вафель
 
16 - 01.12.17 - 13:05
Я имел ввиду - что нужно записывать, так чтобы вначале стояло умножение
   Вафель
 
17 - 01.12.17 - 13:07
Ибо (а*б)/с на самом деле есть 
Окр(Окр(а*b)/с)
и это не тоже самое, что 
окр(окр(а/с)*b)
   serpentt
 
18 - 01.12.17 - 13:09
(16) это хорошо что ТЫ имел ВВИДУ,
написал ТЫ "...Поэтому всегда нужно сначала умножать, а потом уже делить"
Я же не знал ЧТО ты имел ввиду
   serpentt
 
19 - 01.12.17 - 13:11
(16) Порядок действий зависит от поставленной задачи
   MM
 
20 - 01.12.17 - 13:11
(7) Если сначала много раз умножать, то есть риск получить переполнение.
   0xFFFFFF
 
21 - 01.12.17 - 13:15
(13) мне кажется этот пост - большой удар для ТСа...
   Lama12
 
22 - 01.12.17 - 13:15
(0) Что ж ты творишь :-) Сначала умножение, потом деление. Это же компьютер... Он "тупой".
   art commander
 
23 - 01.12.17 - 13:17
(0) Еще один... Все вычисления в компьютере не точные. Это азы.
   sansys
 
24 - 01.12.17 - 13:17
(0) Делайте сначала умножение, а потом деление и будет вам счастье
416.48/3.5*3.5 = 416,480000000000000000000000000000000001
416.48*3.5/3.5 = 416,48
Легко проверить в отладчике 1С
   Вафель
 
25 - 01.12.17 - 13:19
(20) Ну это если ты торгуешь спичками поштучно за зимбабвийские доллары
   Джо-джо
 
26 - 01.12.17 - 13:22
(10) (13) (22) 
А Виндовый куркулятор нормально считает
1/3*3=1
   serpentt
 
27 - 01.12.17 - 13:22
   Джо-джо
 
28 - 01.12.17 - 13:22
это не компьютер не умеет, это 1С не умеет
   sansys
 
29 - 01.12.17 - 13:28
(28) Всё 1С умеет.
Почему люди оперируя с бесконечными дробями удивляются округлению, а размещая 10 яблок в 9 коробок не удивляются факту, что в одной коробке оказывается 2 яблока при этом в других коробках всего одно!!!
   Волшебник
 
Модератор
30 - 01.12.17 - 13:30
(28) 1С умеет к датам прибавлять миллисекунды.
Например,
'2017-12-01' + 0.123 - '2017-12-01' = 0,123
   Быдло замкадное
 
31 - 01.12.17 - 13:31
ты еще 10 на 3 подели а потом на 3 умножь...
   art commander
 
32 - 01.12.17 - 13:31
(26) Это потому что ты - не программист. И пользуешься нубскими режимами виндового калькулятора, которые скрывают горькую правду.
   Джо-джо
 
33 - 01.12.17 - 13:35
(32) тыжпрограммист, так поставь ОКР и скрывай горькую правду не хуже нубского калькултора
 
 
   art commander
 
34 - 01.12.17 - 13:37
(33) Не оскорбляй калькулятор. Он не нубский. У него режим "программист" есть, которым ты не пользуешься.
   art commander
 
35 - 01.12.17 - 13:40
+(34) А по существу, ты не прав. Компьютер не умеет делать точные вычисления. В некоторых случаях одна неточность (ОКР) может ликвидировать другую неточность (10/3*3). Но сути дела это не меняет.
   Волшебник
 
Модератор
36 - 01.12.17 - 13:41
(35) Если баланс не сходится, значит в нём ошибка.
Если сходится, значит ошибки две.
   Optan
 
37 - 01.12.17 - 13:48
Еще занимательная математика (правда не слишком хитрая):
Пусть a=b
1. Умножаем на а --> a*a=a*b
2. Прибавляем а*а --> 2*a*a=а*а+a*b
3. Отнимаем 2*a*b --> 2*a*a-2*a*b=a*a-a*b
4. Выносим за скобки 2--> 2(a*a-a*b)=(a*a-a*b)
5. Сокращаем на a*a-a*b --> 2=1
   Волшебник
 
Модератор
38 - 01.12.17 - 13:49
(37) Нельзя сокращать на ноль.
   Ненавижу 1С
 
39 - 01.12.17 - 13:55
кстати интересно
как внутри 1С представлены числа? там же не тупо double
   СамыйУмный
 
40 - 01.12.17 - 13:56
(0) Сразу видно что не изучал дискретную математику
   Optan
 
41 - 01.12.17 - 13:56
Еще занимательная математика-2:
Вы прораб на стройке, полной кирпичей.
У вас есть линейка, компьютер, с установленной 1С (УПП) и виндовым калькулятором :)

Поставлена задача: узнать диагональ кирпича.

Дополнительное условие: нельзя пользоваться компом, калькулятором, телефоном и т.д. --> любыми расчетами - только измерения только хардкор...
   Волшебник
 
Модератор
42 - 01.12.17 - 13:57
(39) Numeric(10,3)
   dmpl
 
43 - 01.12.17 - 13:58
(34) В нем проблема решена радикально: округление до целых всегда ;)
   Джо-джо
 
44 - 01.12.17 - 14:03
А вы знали, что виндовый калькулятор не может разделить 196 на 14?
   Волшебник
 
Модератор
45 - 01.12.17 - 14:06
(44) Просто надо 2 раза Enter нажать.
   СамыйУмный
 
46 - 01.12.17 - 14:09
(44) У тебя винда пиратская
   Dotoshin
 
47 - 01.12.17 - 14:10
(0) Попробуй деление и умножение местами поменять
https://s8.hostingkartinok.com/uploads/images/2017/12/27a7285bd7baa96294a96a83c6db516e.png
   Ненавижу 1С
 
48 - 01.12.17 - 14:17
(42) пошутил?
я серьезно они же могут как-то большие числа хранить и числа с большой точностью
   Ненавижу 1С
 
49 - 01.12.17 - 14:17
+(48) я про оперативную память
 
  Рекламное место пустует
   art commander
 
50 - 01.12.17 - 14:18
(41) Неправильно ты задачу рассказываешь. надо так:
"По недосмотру прораба, на стройке завелись кирпичи..."
   art commander
 
51 - 01.12.17 - 14:20
(49) Ты думаешь они свою библиотеку вычислений писали? Тупо Double конечно.
   Dotoshin
 
52 - 01.12.17 - 14:20
   Волшебник
 
Модератор
53 - 01.12.17 - 14:21
(48) Открой для себя тип Decimal/Numeric и не путай их с float/double
https://msdn.microsoft.com/ru-ru/library/ms187746(v=sql.120).aspx
   Адинэснег
 
54 - 01.12.17 - 14:21
(6) но это не точно
   an0521
 
55 - 01.12.17 - 14:22
(41) Стандарт кирпича 250х120х65 мм это любой прораб без линейки и 1С знает.  Тебе какую диагональ?
   Dotoshin
 
56 - 01.12.17 - 14:26
(55) ту которая внутри конечно же
http://allforchildren.ru/ex/img/112.gif
   Джо-джо
 
57 - 01.12.17 - 14:29
(55)
У кирпича одна диагональ
Диагональ - прямая линия, соединяющая вершины двух углов, не прилежащих к одной стороне многоугольника, или вершины многогранника, не лежащие в одной плоскости
   Адинэснег
 
58 - 01.12.17 - 14:29
ой, кажется у вас память утекла...
   Адинэснег
 
59 - 01.12.17 - 14:32
раз в месяц эту ссылку здесь размещают...
https://habrahabr.ru/post/112953/
заметьте, там ни слова про тупую 1С
   an0521
 
60 - 01.12.17 - 14:50
   Ненавижу 1С
 
61 - 01.12.17 - 15:05
(51) и double умеет хранить точное значение 2^100?
а 1С умеет
   Ненавижу 1С
 
62 - 01.12.17 - 15:06
(53) я ничего не путаю
я понимаю что там арифметика с фиксированной запятой, но как она устроена конкретно в 1С?
   Веселый собака
 
63 - 01.12.17 - 15:08
А взять открыть серверную базу и посмотреть? )
   Ненавижу 1С
 
64 - 01.12.17 - 15:12
(63) я про хранение чисел в оперативной памяти
   Mr_Rm
 
65 - 01.12.17 - 16:07
   Михаил Козлов
 
66 - 01.12.17 - 16:21
(39) Не знаю. как представлены, но мантисса может быть 32 (а, может, и больше).
От нечего делать как-то погонял системы ЛУ Годунова (это примеры плохо обусловленных матриц).
В 1С решение совпадало с точным до размерности 66.
На Паскале: 18 с REAL и 23 с DOUBLE.
   s-n-a-y
 
67 - 01.12.17 - 16:59
(26) значит он парсить умеет



Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует