Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2012, 19:00   #1
roman_44
Новичок
Джуниор
 
Регистрация: 25.01.2012
Сообщений: 1
Сообщение Количество знаков после запятой

Как мне в Екселе получить количество знаков после запятой?
Например число 215,4533 - знаков после запятой 4.
Есть ли стандартная функция?
Или как мне можно это в экселе осуществить?
roman_44 вне форума Ответить с цитированием
Старый 25.01.2012, 19:12   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

=ДЛСТР(A1)-НАЙТИ(",";A1)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 27.01.2012, 00:51   #3
sub4biz
 
Регистрация: 23.01.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
=ДЛСТР(A1)-НАЙТИ(",";A1)
Ваша формула будет давать ошибку для любого целого числа

Правильно так:
=ЕСЛИ(ОТБР(A1)=A1;0;ДЛСТР(A1)-НАЙТИ(",";A1))
где A1 - ячейка с анализируемым значением
sub4biz вне форума Ответить с цитированием
Старый 27.01.2012, 06:58   #4
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

Вариант
Код:
=МАКС(ДЛСТР(A1)-НАЙТИ(",";A1&",");0)
=МАКС(ДЛСТР(ОСТАТ(A1;1))-2;0)
MCH вне форума Ответить с цитированием
Старый 27.01.2012, 20:57   #5
sub4biz
 
Регистрация: 23.01.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от MCH Посмотреть сообщение
Вариант
Код:
=МАКС(ДЛСТР(A1)-НАЙТИ(",";A1&",");0)
=МАКС(ДЛСТР(ОСТАТ(A1;1))-2;0)
В первой формуле - все ОК.

Вторая формула - ошибочна.

Чтобы убедиться - введи, например
A1 = -7,98
A1 = -90,999
A1 = -3,92
A1 = -3,264

и по настоящему удивишься результату.
Реально удивишься
sub4biz вне форума Ответить с цитированием
Старый 27.01.2012, 21:11   #6
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от sub4biz Посмотреть сообщение
Чтобы убедиться - введи, например
A1 = -7,98
A1 = -90,999
A1 = -3,92
A1 = -3,264

и по настоящему удивишься результату.
Чему тут удивляться? Михаил писал формулу для положительных чисел, потому как ТС не указал на возможное наличие отрицательных.
Универсально будет так:
Код:
=МАКС(ДЛСТР(ОСТАТ(ABS(A1);1))-2;0)
ЗЫ Числа в периоде, типа -90,999 всегда будут показывать 15, кол-во значащих чисел разрядности Excel.
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 27.01.2012, 21:14   #7
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

Цитата:
Сообщение от sub4biz Посмотреть сообщение
В первой формуле - все ОК.

Вторая формула - ошибочна.

Чтобы убедиться - введи, например
A1 = -7,98
A1 = -90,999
A1 = -3,92
A1 = -3,264

и по настоящему удивишься результату.
Реально удивишься
Совершенно не удивляюсь, если проблема не в формуле, а в стандарте IEEE 754
Отрицательные числа здесь абсолютно не причем.

Сколько знаков посчитает Ваша формула? если в А1 выражение:
=1,2-1,1
Попробуйте ответить до проверки на практике.
MCH вне форума Ответить с цитированием
Старый 27.01.2012, 21:19   #8
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

Цитата:
Сообщение от Serge 007 Посмотреть сообщение
Чему тут удивляться? Михаил писал формулу для положительных чисел, потому как ТС не указал на возможное наличие отрицательных.
Универсально будет так:
Код:
=МАКС(ДЛСТР(ОСТАТ(ABS(A1);1))-2;0)
ЗЫ Числа в периоде, типа -90,999 всегда будут показывать 15, кол-во значащих чисел разрядности Excel.
Сергей, знак числа здесь не причем
Формула =ОСТАТ(-90,999;1) дает результат 0,00100000000000477 а не 0,001
Впрочем как и
=ОСТАТ(90,999;1) дает результат 0,998999999999995 вместо 0,999
MCH вне форума Ответить с цитированием
Старый 27.01.2012, 21:25   #9
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

Еще как вариант:
Код:
=МАКС(ДЛСТР(A1)-ДЛСТР(ОТБР(A1))-1;0)
MCH вне форума Ответить с цитированием
Старый 23.05.2019, 11:54   #10
light26
 
Регистрация: 27.03.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от sub4biz Посмотреть сообщение
Ваша формула будет давать ошибку для любого целого числа

Правильно так:
=ЕСЛИ(ОТБР(A1)=A1;0;ДЛСТР(A1)-НАЙТИ(",";A1))
где A1 - ячейка с анализируемым значением
Не смог разобраться как использовать данную формулу если значение не константа, а результат вычисления другой формулы. Например в А1:
Код:
=СУММЕСЛИ($P$5:$EG$5;"неделя";P9:EG9)
возвращает 1,2355. Формат ячеек выводит только 3 знака после запятой и я должен видеть если в диапазоне $P$5:$EG$5 допущена ошибка и кто-то ввел, например, 0,2055 вместо 0,205.
То есть формула должна иметь вид (алгоритм):
Код:
=ЕСЛИ(СУММЕСЛИ($P$5:$EG$5;"неделя";P9:EG9)=число знаков после запятой>3;"Ошибка";СУММЕСЛИ($P$5:$EG$5;"неделя";P9:EG9))
light26 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление не нужных знаков после запятой. Alar Общие вопросы Delphi 4 31.05.2012 19:59
Как ограничить количество вводимых знаков числа после запятой. proggramer Общие вопросы C/C++ 1 24.03.2010 03:15
Вещественный тип: Количество знаков после запятой... Demien Общие вопросы Delphi 2 10.11.2009 19:14
Определение количества знаков после запятой nec117 Общие вопросы .NET 1 01.10.2009 19:04
Ограничение знаков после запятой,StringGrid Gorin Компоненты Delphi 9 20.09.2007 16:10