Имя: Пароль:
1C
1С v8
Занимательная математика ... почему так?
0 lamme
 
01.12.17
12:51
вот формула
http://clip2net.com/s/3PXPANF

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

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

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

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

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

я может в школе чего пропустил ...
10 Вафель
 
01.12.17
12:59
(9) Ибо округление. Компьютер не умеет работать с бесконечными дробями
11 lamme
 
01.12.17
13:00
короче .. один случай на 1000.
и он выпал
12 wondkind
 
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
14 serpentt
 
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)
18 serpentt
 
01.12.17
13:09
(16) это хорошо что ТЫ имел ВВИДУ,
написал ТЫ "...Поэтому всегда нужно сначала умножать, а потом уже делить"
Я же не знал ЧТО ты имел ввиду
19 serpentt
 
01.12.17
13:11
(16) Порядок действий зависит от поставленной задачи
20 MM
 
01.12.17
13:11
(7) Если сначала много раз умножать, то есть риск получить переполнение.
21 0xFFFFFF
 
01.12.17
13:15
(13) мне кажется этот пост - большой удар для ТСа...
22 Lama12
 
01.12.17
13:15
(0) Что ж ты творишь :-) Сначала умножение, потом деление. Это же компьютер... Он "тупой".
23 art commander
 
01.12.17
13:17
(0) Еще один... Все вычисления в компьютере не точные. Это азы.
24 sansys
 
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
27 serpentt
 
01.12.17
13:22
28 Джо-джо
 
01.12.17
13:22
это не компьютер не умеет, это 1С не умеет
29 sansys
 
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 умножь...
32 art commander
 
01.12.17
13:31
(26) Это потому что ты - не программист. И пользуешься нубскими режимами виндового калькулятора, которые скрывают горькую правду.
33 Джо-джо
 
01.12.17
13:35
(32) тыжпрограммист, так поставь ОКР и скрывай горькую правду не хуже нубского калькултора
34 art commander
 
01.12.17
13:37
(33) Не оскорбляй калькулятор. Он не нубский. У него режим "программист" есть, которым ты не пользуешься.
35 art commander
 
01.12.17
13:40
+(34) А по существу, ты не прав. Компьютер не умеет делать точные вычисления. В некоторых случаях одна неточность (ОКР) может ликвидировать другую неточность (10/3*3). Но сути дела это не меняет.
36 Волшебник
 
модератор
01.12.17
13:41
(35) Если баланс не сходится, значит в нём ошибка.
Если сходится, значит ошибки две.
37 Optan
 
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) Нельзя сокращать на ноль.
39 Ненавижу 1С
 
гуру
01.12.17
13:55
кстати интересно
как внутри 1С представлены числа? там же не тупо double
40 СамыйУмный
 
01.12.17
13:56
(0) Сразу видно что не изучал дискретную математику
41 Optan
 
01.12.17
13:56
Еще занимательная математика-2:
Вы прораб на стройке, полной кирпичей.
У вас есть линейка, компьютер, с установленной 1С (УПП) и виндовым калькулятором :)

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

Дополнительное условие: нельзя пользоваться компом, калькулятором, телефоном и т.д. --> любыми расчетами - только измерения только хардкор...
42 Волшебник
 
модератор
01.12.17
13:57
(39) Numeric(10,3)
43 dmpl
 
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) У тебя винда пиратская
47 Dotoshin
 
01.12.17
14:10
(0) Попробуй деление и умножение местами поменять
https://s8.hostingkartinok.com/uploads/images/2017/12/27a7285bd7baa96294a96a83c6db516e.png
48 Ненавижу 1С
 
гуру
01.12.17
14:17
(42) пошутил?
я серьезно они же могут как-то большие числа хранить и числа с большой точностью
49 Ненавижу 1С
 
гуру
01.12.17
14:17
+(48) я про оперативную память
50 art commander
 
01.12.17
14:18
(41) Неправильно ты задачу рассказываешь. надо так:
"По недосмотру прораба, на стройке завелись кирпичи..."
51 art commander
 
01.12.17
14:20
(49) Ты думаешь они свою библиотеку вычислений писали? Тупо Double конечно.
52 Dotoshin
 
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) но это не точно
55 an0521
 
01.12.17
14:22
(41) Стандарт кирпича 250х120х65 мм это любой прораб без линейки и 1С знает.  Тебе какую диагональ?
56 Dotoshin
 
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С
60 an0521
 
01.12.17
14:50
61 Ненавижу 1С
 
гуру
01.12.17
15:05
(51) и double умеет хранить точное значение 2^100?
а 1С умеет
62 Ненавижу 1С
 
гуру
01.12.17
15:06
(53) я ничего не путаю
я понимаю что там арифметика с фиксированной запятой, но как она устроена конкретно в 1С?
63 Веселый собака
 
01.12.17
15:08
А взять открыть серверную базу и посмотреть? )
64 Ненавижу 1С
 
гуру
01.12.17
15:12
(63) я про хранение чисел в оперативной памяти
65 Mr_Rm
 
01.12.17
16:07
66 Михаил Козлов
 
01.12.17
16:21
(39) Не знаю. как представлены, но мантисса может быть 32 (а, может, и больше).
От нечего делать как-то погонял системы ЛУ Годунова (это примеры плохо обусловленных матриц).
В 1С решение совпадало с точным до размерности 66.
На Паскале: 18 с REAL и 23 с DOUBLE.
67 s-n-a-y
 
01.12.17
16:59
(26) значит он парсить умеет