получить десятичную часть числа в MS Access
Как получить доступ к десятичной части числа в MS Access? Более конкретно, я хочу только компонент после десятичной точки, но не включая десятичную точку. Это также должно работать для всех целых чисел. Я видел этот ответ для других движков SQL, но они не работают в Access. Я не могу быть намного более конкретным, чем это, из-за чувствительной природы того, над чем я на самом деле работаю.
Например, при следующих числах вход находится слева, а выход-справа. Вывод может быть как текстовым, так и числовым.
Если бы я использовал C#, то следующий код дал бы мне то, что я хочу:
4 ответа
У меня есть результаты деления, и я хочу отбросить десятичную часть полученного числа. Как я могу это сделать?
Вычтите целочисленную часть значения.
Или в качестве примера выражения SQL:
Зависит от обстоятельств. Если это, например, в textbox, вы можете использовать InStr, чтобы найти десятичную дробь, а затем использовать функцию Mid(), чтобы получить число после нее. Если это часть арифметического уравнения, то я бы использовал функцию Int() и вычитал одно число из другого, чтобы получить разницу.
Если вы можете подробнее рассказать о том, как он используется и в каком контексте, я могу отредактировать свой ответ, чтобы дать вам более подробную информацию.
EDIT: После того, как появилась дополнительная информация, попробуйте это:
Стабильное решение, создающее строку, содержащую десятичные знаки из Double.
где приведенная выше пользовательская функция содержит следующий код:
Это позволяет избежать распространенных ошибок, так что это
Похожие вопросы:
Я бы хотел, чтобы мой демон Python2 проснулся и сделал что-то именно в эту секунду. Есть ли лучший способ получить десятичную часть числа с плавающей запятой для времени сна, кроме этого: now =.
Возможный Дубликат : Извлечение десятичной части из числа с плавающей запятой в C Я хотел бы получить десятичную часть двойника наиболее эффективным способом. Что-то вроде этого: double a = 1.5;.
У меня есть результаты деления, и я хочу отбросить десятичную часть полученного числа. Как я могу это сделать?
Как получить десятичную точку числа? Например: Если у меня есть 1.5, как получить число 5?
Как получить десятичную часть плавающего числа как десятичную в Java? Например, Если float f=2.34; Тогда decimal part=34;
Правка: Это связано с тем, как компьютеры обрабатывают операции с плавающей запятой, с чем каждый программист сталкивается раз в жизни. Я не совсем правильно понял это, когда задавал вопрос. Я знаю.
Форматирование числового или валютного поля
Типы данных «Число» (в том числе «Большое число») и «Валюта» имеют различные форматы, которые отвечают вашим уникальным обстоятельствам. У вас есть три варианта форматирования: сохранение форматов по умолчанию, применение стандартного формата или создание пользовательского формата. При применении формата к полю таблицы этот же формат автоматически применяется к любому оклю формы или отчета, который вы впоследствии привяжете к этому полю таблицы. Форматирование только изменяет способ отображения данных и не влияет на способ их хранения и ввод данных пользователями.
В этой статье
Общие сведения о числовом и валютном форматах
Чтобы создать пользовательский формат, введите различные символы в свойстве Format поля таблицы. Знаки могут быть заметелями (такими как 0 и #), знаками-знаками (например, запятые и запятые), литералами и цветами в зависимости от того, как вы хотите использовать форматирование. Помните, что Access автоматически применяет все пользовательские форматы, которые используются в поле таблицы, к полю в форме или отчете, если он связан.
Вы можете задать форматы для четырех типов числовых значений: положительных, отрицательных, нулей (0) и NULL (неопределяемого). При создании формата для каждого типа значений сначала следует уложить формат положительных значений, второй формат отрицательных значений, третий формат и последний формат для значений NULL. Кроме того, каждый формат необходимо разделять за за semicolon.
Пример пользовательского форматирования: #,###.#;(#,##.##)[Красный];0;000,00;» Undefined»
Отображается как: 1 234,568-1,234,568 = 0
Вот что означает форматирование
Знак номера (#)— это место для цифр. Если значений нет, в Access отображается пустое пространство. Для отображения нулей вместо пустых пробелов.
Например, чтобы отобразить число 1234 как 1234,00, в качестве замещего используйте число 0, например «####,00».
Положительные значения с двумя десятичных знаками.
Отрицательные значения с двумя десятичных знаками в скобах и красным цветом.
Нулевые значения, такие как число 0, всегда с двумя десятичных знаками.
Значения Null в качестве слова «Undefined» (Неопределяемо).
Для строки можно уделить до четырех разделов, разделы разделены заточкими (;). Если поле таблицы принимает значения NULL, можно опустить четвертый раздел.
Если первый раздел содержит #,###.##
Отображаются положительные значения.
1234,5678 отображается как 1 234,568
В этом формате в качестве десятичной запятой используется точка, а в качестве десятичной — точка. Если десятичных значений в записи больше, чем количество знаков-заметимов в пользовательском формате, Access округит значения и отобразит только количество значений, заданное форматом. Например, если поле содержит значение 3456,789, но его формат определяет два десятичных знака, Access округит его до 0,79.
Совет: Для формата с большим или большим количеством десятичных значений добавьте дополнительные заме желтую заме же, например # #.##.
Если второй раздел содержит (#,###.##)[Красный]
Отображаются только отрицательные значения.
Если данные не содержат отрицательных значений, Access оставляет поле пустым.
Отрицательное значение заключено в литералы или скобки. В этом примере любое отрицательное значение отображается красным цветом.
Если третий раздел содержит 0 000,00
Определяет формат всех нулевых (0) значений.
Если поле содержит нулевое значение, отображается 0 0000,00. Чтобы отобразить текст вместо числа, используйте «Ноль» (в двойных кавычках).
Если четвертый раздел содержит «Неопределена»
Определяет, что пользователи видят, когда запись содержит значение NULL. В этом случае пользователи видят слово «Неопределена».
Можно также использовать другой текст, например «Null» или «****». Окружающие символы с двойными кавычками обрабатываются как литералы и отображаются в точности так, как ввели.
Применение заранее за
В Access есть несколько предопределельных форматов числовых и валютных данных. По умолчанию число отображается в качестве введенного.
Совет С помощью свойства DecimalPlaces вы можете переопределить число десятичных знаков для стандартного формата, заданного для свойства Format.
Откройте таблицу в режиме Конструктор.
В верхней части сетки выберите поле даты и времени, которое нужно отформатировать.
В разделе «Свойства поля» щелкните стрелку в поле свойства «Формат» и выберите формат из списка.
После выбора формата появится кнопка «Параметры обновления свойств», которая позволяет применить новый формат к любым другим полям таблицы и элементу управления формы, которые будут его логически наследовать. Чтобы применить изменения во всей базе данных, щелкните смарт-тег и нажмите кнопку «Обновить формат везде используется. В этом случае имя поля — это имя поля с именем вашего номера или валюты.
Чтобы применить изменения во всей базе данных, в диалоговом окне «Свойства обновления» отображаются формы и другие объекты, которые наследуют новый формат. Нажмите Да.
Сохраните изменения и переключиться в представление таблицы, чтобы узнать, соответствует ли формат вашим требованиям.
Примечание. Новые формы, отчеты и представления, которые создаются на основе этой таблицы, получают форматирование таблицы, но их можно переопременить в форме, отчете или представлении, не изменяя ее форматирование.
В форме или отчете
В форме или отчете даты обычно показаны в текстовых полях. Просто захотите установить в свойстве «Формат» текстового окна нужный формат даты.
Откройте форму или отчет в макете или конструкторе.
Наберем в текстовом поле указатель, указав число или валюту.
Нажмите F4, чтобы отобразить лист свойств.
Задав для свойства Format один из предопределенных форматов дат.
Откройте запрос в конструкторе.
Щелкните правой кнопкой мыши поле даты и выберите «Свойства».
В окне свойств выберите нужный формат из списка свойств Format.
С помощью функции FormatDateTime можно отформатировать значение даты в один из нескольких заранее задав формат.
Это может пригодиться, если вы работаете в области, которая требует выражения, например макроса или запроса.
Примеры предопределяемого формата
В следующей таблице показаны предопределенные параметры свойства Format для чисел и валют.
(Используется по умолчанию.) Число отображается так, как оно было введено.
Используется разделитель тысяч; используются настройки, заданные в региональных параметрах Windows для отрицательных чисел, разделителя целой и дробной части, обозначения денежной единицы и числа десятичных разрядов.
Используется символ евро () независимо от обозначения денежной единицы, заданного в региональных параметрах Windows.
Выводится по крайней мере одна цифра; используются настройки, заданные в региональных параметрах Windows для отрицательных чисел, разделителя целой и дробной части, обозначения денежной единицы и числа десятичных разрядов.
Используется разделитель тысяч; используются настройки, заданные в региональных параметрах Windows для отрицательных чисел, разделителя целой и дробной части и числа десятичных разрядов.
Значение умножается на 100 и выводится со знаком процента (%); используются настройки, заданные в региональных параметрах Windows для отрицательных чисел, разделителя целой и дробной части и числа десятичных разрядов.
Используется стандартное экспоненциальное представление.
Ниже приведены примеры стандартных числовых форматов.
Применение пользовательского формата
Откройте таблицу в режиме Конструктор.
В верхней части сетки выберите поле даты и времени, которое нужно отформатировать.
В разделе «Свойства поля» перейдите на вкладку «Общие», щелкните ячейку рядом с полем «Формат» и введите определенные символы в соответствии с вашими потребностями форматирования.
После выбора формата появится смарт-тег «Параметры обновления свойств» (только Access 2010) и вы сможете применить новый формат к любым другим полям таблицы и элементу управления формы, которые будут его логически наследовать. Чтобы применить изменения во всей базе данных, щелкните смарт-тег и нажмите кнопку «Обновить формат везде, где используется имя поля». В этом случае имя поля — это имя поля даты и времени.
Чтобы применить изменения во всей базе данных, в диалоговом окне «Свойства обновления» отображаются формы и другие объекты, которые наследуют новый формат. Нажмите Да.
Сохраните изменения и переключиться в представление таблицы, чтобы узнать, соответствует ли формат вашим требованиям.
Проверьте формат следующим образом:
Введите значения без тысячных или десятичных значений и посмотрите, как формат обрабатывает данные. В правильном ли формате размыкается формат?
Введите значения, которые больше или короче, чем вы ожидаете (с и без разных между ними), и посмотрите, как работает формат. Добавляет ли формат пустые пробелы, а также нули в конце или в конце?
Введите нулевые значения или значения NULL в формате, предназначенном для положительных или отрицательных значений, и посмотрите, нравится ли результат.
Примечание. При применении формата к полю таблицы Access применяет его в любой форме или отчете, которые вы связываете (связываете) с этим полем.
Примеры пользовательских форматов
Ниже приведены примеры пользовательских числовых форматов.
Положительные значения отображаются без изменений; отрицательные значения выводятся в скобках; если значение равно Null, выводится слово «Null».
Выводит знак «плюс» (+) или «минус» (-) с положительными или отрицательными числами; отображает 0,0, если значение равно нулю.
Символы пользовательского формата
Чтобы создать пользовательский формат, используйте следующие символы в качестве замецев и между словами:
Используется для отображения цифры. Каждый экземпляр символа представляет позицию для одного числа. Если в позиции нет значения, access отобразит пустое пространство. Кроме того, его можно использовать в качестве замещего.
Например, если применить формат #,# ## и ввести в поле значение 45, будет отобрано 45. Если ввести в поле 12 145, в Access отобразится 12 145, хотя слева от замещего был определен только один.
Используется для отображения цифры. Каждый экземпляр символа представляет позицию для одного числа. Если в позиции нет значения, Access отобразит ноль (0).
Указывает на то, где следует разместить знаки между целой и десятичной частью числовой или валютной части.
Десятичных междустрочных междустрочных знаков может быть несколько и они за установлены в региональных параметрах Windows.
Указывает на то, где следует разместить знаки-знаки между тысячными или валютными полями.
В Windows в региональных параметрах различаются и устанавливаются тысячи разных междустроек.
Используется для принудительного отображения в Access знака, который следует за ним. Это то же самое, что и вокруг символа с двойными кавычками.
Используется для принудительного выравнивания всех значений влево. При принудительном выравнивании по левому знаку нельзя использовать текстовые знаки с цифрами #и 0, но в текстовых символах можно использовать заме же.
Используется для того, чтобы символ, следующий за звездочкой, стал символом заполнения — символом, который используется для заполнения пустых пробелов. Access обычно выравнивает числные данные по правому и заполняет любую область слева от значения пустыми пробелами. Вы можете добавить символы заливки в любое место строки формата, а при этом Access заполнит указанным знаком любые пробелы.
Например, для формата £##*
,00 отображается валюта в формате £45
.15. Количество знаков тильды (
),отображаемого в поле, зависит от количества пробелов в поле таблицы.
Используется в качестве последнего символа в строке формата. Умножает значение на 100 и отображает результат со знаком процента в конце.
Используется для экспоненциального отображения значений.
Используйте этот параметр, если заранее задайте достаточное количество места для значений. Используйте E+ или e+ для отображения значений в положительных степлеях, а E- или e- — для отображения отрицательных стенений. Эти заме же необходимо использовать вместе с другими символами.
Предположим, например, что применив к числовому полю формат 0,000E+00, введите число 612345. Access отобразит 6.123E+05. Сначала Access округит число десятичных знаков до трех (количество нулей справа или слева от десятичной заготовки). Затем Access вычисляет экспоненциальный показатель по количеству цифр, попадающих справа (или слева, в зависимости от языковых параметров) десятичной заготовки в исходном значении. В этом случае исходное значение было бы поместить «612345» (пять цифр) справа от десятичной замера. По этой причине в Access отображается значение 6,123E+05, итоговая величина равна 6,123 x 105.
Закругка текста, который должен быть заметлен пользователями, двойными кавычками.
Используется для применения цвета к всем значениям в разделе формата. Имя цвета необходимо заключено в квадратные скобки и использовать одно из таких имен: черный, синий, голубой, зеленый, пурпурный, красный, желтый или белый.
Отобразить до н. э. или до н. э.
Пользовательский формат можно использовать для отображения до или после года до н. э. в зависимости от того, было ли ввели положительное или отрицательное число. Положительные числа отображаются в годах с до н. д. Отрицательные числа отображаются как года со значениями «до н. э.».
Откройте таблицу в режиме Конструктор.
В верхней части сетки выберите числовой формат поля.
В нижней части щелкните поле свойства Format и введите такой пользовательский формат:
Почему Access округляет дроби?
MS Access 2016 округляет числа
В интернете нигде решения не нашел. Может вы подскажете? Тип данных: Числовой Формат: С.
Почему то округляет поле
Есть таблица, а в ней поле «Оборотка real null» Так вот вношу в это поле значение, а оно.
Почему округляет?
Вводит в TextBox1 чило 123 в TextBox2 показывает 12. Почему так? Public Class Form1 Dim a.
Добавлено через 1 минуту
ltv_1953, было Целое.
Почему round не округляет?
acc=658.483764619061 round(acc,2) print(acc) 658.483764619061
Почему-то не округляет до десятых?
Добрый день всем! У меня программа должна конвертировать Фаренгейты в С и при этом округлять.
В первом варианте не округляет до целого числа, а во втором случае округляет
Добрый Вечер Программисты. Подскажите пожалуйста почему в первом варианте не округляет до целого.
Почему программа округляет значение переменной?
Почему программа округляет значение переменной p? Как это исправить? IDE: CODE::BLOCKS 16.01
Не пойму почему php округляет мне числа
Ребята, привет! Помогите разобраться в чем подвох, вот есть у меня функция для получения.
Настраиваемые числовые форматы для функции Format (пользовательское веб-приложение для Access)
Узнайте, как управлять отображением числа путем создания определяемого пользователем числового формата.
Корпорация Майкрософт больше не рекомендует создавать и использовать веб-приложения для Access в SharePoint. В качестве альтернативы можно использовать Microsoft PowerApps, чтобы создавать бизнес-решения без кода для Интернета и мобильных устройств.
Можно изменить способ отображения числа, создав определяемый пользователем числовой формат. Определяемый пользователем числовой формат может иметь от одного до трех разделов, разделенных точкой с запятой (;). Если аргумент Style функции Format (пользовательское веб-приложение для Access) содержит один из предварительно определенных числовых форматов, разрешен только один раздел.
Спецификации формата
В следующей таблице перечислены знаки, которые могут использоваться при создании определяемых пользователем форматов чисел.
В таблице ниже приведены некоторые примеры выражений формата для чисел. (Во всех этих примерах предполагается, что в вашей системе установлены языковые настройки «Английский-США»). Первый столбец содержит строки формата для функции Format. Другие столбцы содержат выходные данные, если форматированные данные имеют значение, указанное в заголовках столбцов.
Format (Style) | Форматирование «5» | Форматирование «-5» | Форматирование «0.5» | Форматирование «0» |
---|---|---|---|---|
Пустая строка («») | 5 | -5 | 0.5 | 0 |
0 | 5 | -5 | 1 | 0 |
0.00 | 5.00 | -5.00 | 0.50 | 0.00 |
#,##0 | 5 | -5 | 1 | 0 |
$#,##0;($#,##0) | $5 | ($5) | $1 | $0 |
$#,##0.00;($#,##0.00) | $5.00 | ($5.00) | $0.50 | $0.00 |
0% | 500% | -500% | 50% | 0% |
0.00% | 500.00% | -500.00% | 50.00% | 0.00% |
0.00E+00 | 5.00E+00 | -5.00E+00 | 5.00E-01 | 0.00E+00 |
0.00E-00 | 5.00E00 | -5.00E00 | 5.00E-01 | 0.00E00 |
«$#,##0;;\Z\e\r\o» | $5 | $-5 | $1 | Нуль |
Примечания
Если записать знаки точки с запятой без кода между ними, то отсутствующий раздел будет отображаться с использованием формата положительного значения.
Округление в Аксессе
Для округления чисел в Access 2000 и более поздних версих есть встроенная функция Round().
Для более ранних версий используйте вот эту пользовательскую функцию округления Кена Гетца.
Встроенная функция
Используйте функцию Round() в источнике данных текстового поля или в вычисляемом поле запроса.
Скажем, у вас есть такое выражение в строке «Поле» в конструкторе запросов:
Налог: [Стоимость] * [СтавкаНалога]
Чтобы округлить до ближайшей копейки, используйте:
Налог: Round([Стоимость] * [СтавкаНалога], 2)
Округление вниз
Чтобы округлить все дробные цифры до ближайшего целого вниз, используйте Int():
Int([МоеПоле])
Все эти числа будут округлены вниз до 2: 2,1, 2,5, 2,8, and 2,99.
Чтобы округлить вниз до ближайшей копейки (напр. 10,2199 руб становятся 10,21 руб), умножьте на 100, округлите, и затем разделите на 100:
Int(100 * [МоеПоле]) / 100
Округление вверх
Округлить до ближайших 5 копеек
Чтобы округлить до ближайших 5 копеек, умножьте число на 20, округлите его, и разделите на 20:
Round(20 * [МоеПоле], 0) / 20
Подобным образом, чтобы округлить до ближайшего четвертака, умножьте на 4, округлите, и разделите на 4:
Round(4 * [МоеПоле], 0) / 4
Округлить до 1000 руб.
Чтобы округлить до ближайших 1000 руб., разделите на 1000, округлите, и умножьте на 1000. Пример:
1000 * Round([Стоимость] / 1000, 0)
Чтобы округлить до 1000 руб. вниз, разделите на 1000, получите целое число и умножьте на 1000. Пример:
1000 * Int([Стоимость] / 1000)
Чтобы округлить в сторону нуля, используйте Fix() вместо Int().
Альтернативно, пользовательская функция Кена Гетца ведет себя в точности как упомнутая экселевская функция.
Зачем округлять?
Существует свойство Число десятичнызх знаков для полей в таблице/запросе и для текстбоксов в форме/отчете. Это свойство влияет только на то, как поле отображается, а не на то, как оно хранится. Число выглядит округленным, но при сложении ряда чисел (напр. в примечании отчета), итог может «не биться».
Округляйте такое поле, когда вы производите вычисление и итоговая сумма сойдется.
Это также относится и к денежным полям. Аксесс отображает денежные поля округленными до ближайшей копейки, но хранит их значение до сотой доли копейки (4 знака после запятой.)
Банковское округление
Функция Round() в Аксессе использует «банковское округление». Когда последней значащей цифрой оказывается 5, она округляет до ближайшего четной цифры. Так, 0,125 округляется до 0,12 (2 четно), в то время как 0,135 округляется до 0,14 (4 четно.)
Если вы не хотите использовать банковское округление, возьмите функцию Кена Гетца (ссылка вверху.)
Ошибки плавающей запятой
Но эти числа являются приблизительными. Точно так же, как 1/3 требует бесконечного количества знаков в десятичной системе, большинство чисел с плавающей запятой не могут быть представлены точно в двоичной системе. Википедия объясняет проблему точности, с которой вы сталкиваетесь, оперируя числами с плавающей запятой.
Резюме заключается в том, что крайние цифры могут не округлиться ожидаемым вами образом,благодаря тому факту, что действительные значения и отображаемые не совпадают. Это становится особенно заметно при проверке банковского округления.
Денежный тип справляется только с 4 десятичными знаками. Используйте масштабируемый тип Действительный (Decimal), если вам нужно больше знаков после запятой.
Округление дат и времени
Обратите внимание, что тип Дата/Время в Аксессе является особым видом типа с плавающей запятой, в котором дробная часть обозначает время дня. Следовательно, поля типа Дата/Время с компонентой времени также подвержены ошибкам округления.
Функция ниже округляет дату/время до указанного количества секунд. Например, чтобы округлить до ближайшего получаса (30 * 60 seconds), используйте:
=RoundTime([МоеПолеДатаВремя], 1800)
Заключение
Для более детального технического объяснения теории округления в целом, см. статью Клайва Максфилда (Clive Maxfield) An introduction to different rounding algorithms.