Числа у меня будут положительные с двумя десятичными знаками, поэтому остановился на самом простом варианте в виде
Код
=A1-ЦЕЛОЕ(A1)
Только округлять нужно будет произведение двух чисел и результат потом нужно умножить на 100. Все работает прекрасно, только с двумя числами получается не то, что ожидаю A1 = 8,20 A2 = 2875
Код
=(A1*A2-ЦЕЛОЕ(A1*A2))*100
Результат = -3,63798E-10
P.S. Цель у меня следующая. Представить произведение двух чисел например 45,45 * 30 = 1363,5 в виде 13 63 50 в разных ячейках
Числа у меня будут положительные с двумя десятичными знаками, поэтому остановился на самом простом варианте в виде
Код
=A1-ЦЕЛОЕ(A1)
Только округлять нужно будет произведение двух чисел и результат потом нужно умножить на 100. Все работает прекрасно, только с двумя числами получается не то, что ожидаю A1 = 8,20 A2 = 2875
Код
=(A1*A2-ЦЕЛОЕ(A1*A2))*100
Результат = -3,63798E-10
P.S. Цель у меня следующая. Представить произведение двух чисел например 45,45 * 30 = 1363,5 в виде 13 63 50 в разных ячейках LuxVeritatis
ОСТАТ тоже дает погрешность и будет давать не ожидаемый результат. В общем как вы и сказали лечится с помощью ОКРУГЛ(), поэтому произведение двух вещественных чисел нужно округлять до 2-х знаков после запятой, даже не смотря на то, что получается там целое
Код
=(ОКРУГЛ(A1*A2;2)-ЦЕЛОЕ(A1*A2))*100
или
Код
=ОСТАТ(ОКРУГЛ(A1*A2;2);1)*100
Так то всё логично, если вспомнить про погрешность. Просто меня удивило, что произведение двух чисел и целое произведения этих чисел одинаковое. Разница равно 0. Но разница, умноженная на что-то будет очень малое число
ОСТАТ тоже дает погрешность и будет давать не ожидаемый результат. В общем как вы и сказали лечится с помощью ОКРУГЛ(), поэтому произведение двух вещественных чисел нужно округлять до 2-х знаков после запятой, даже не смотря на то, что получается там целое
Код
=(ОКРУГЛ(A1*A2;2)-ЦЕЛОЕ(A1*A2))*100
или
Код
=ОСТАТ(ОКРУГЛ(A1*A2;2);1)*100
Так то всё логично, если вспомнить про погрешность. Просто меня удивило, что произведение двух чисел и целое произведения этих чисел одинаковое. Разница равно 0. Но разница, умноженная на что-то будет очень малое числоLuxVeritatis
Сообщение отредактировал LuxVeritatis - Воскресенье, 28.05.2017, 12:50
Pelena Вам правильно сказала там целых не получается Ваши вещественные числа, например, 8,2 в двоичном коде могут представлять бесконечную дробь и комп возьмёт ее в память с большой точностью потом на какие круглые Вы не умножайте, вытащить мантиссу к нулю уже не удастся и остаток будет всегда.
Pelena Вам правильно сказала там целых не получается Ваши вещественные числа, например, 8,2 в двоичном коде могут представлять бесконечную дробь и комп возьмёт ее в память с большой точностью потом на какие круглые Вы не умножайте, вытащить мантиссу к нулю уже не удастся и остаток будет всегда.Sandor