Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
8 / 8 / 0
Регистрация: 18.06.2017
Сообщений: 102
1

Дробные числа прописью

10.08.2017, 17:48. Показов 1224. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день !

Подскажите как можно сделать отображение дробны чисел прописью?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.08.2017, 17:48
Ответы с готовыми решениями:

Числа прописью
В программе Ексел создать такую формулу невозможно, т.к там идет арифметический посчет. Мне нужно...

Числа прописью
Добрый день! Как можно сделать в аксесс при вормировании запроса число прописью? (да и вообще как...

Необходимо чтобы числа писались прописью
На пример 2304567-два миллиона триста четыре тысячи пятьсот шестьдесят семь Если не трудно...

Цикл: В ячейки Excel записываются целые числа. Как исправить, чтобы числа были дробные?
Программа считает в цикле Y при заданных х и находит максимум и минимум функции. В ячейки Excel ...

15
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,140
Записей в блоге: 4
10.08.2017, 18:00 2
Цитата Сообщение от peshalex Посмотреть сообщение
Добрый день !

Подскажите как можно сделать отображение дробны чисел прописью?
а сколько дробных разрядов имеется в наличии
0
8 / 8 / 0
Регистрация: 18.06.2017
Сообщений: 102
10.08.2017, 19:42  [ТС] 3
до двух знаков после запятой

Добавлено через 1 час 34 минуты
А если точнее мне нужно указывать пропись даты типа " 2.5 (два с половиной) года" и тд
0
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,140
Записей в блоге: 4
10.08.2017, 19:44 4
а кроме половины года --что еще может быть
0
8 / 8 / 0
Регистрация: 18.06.2017
Сообщений: 102
10.08.2017, 19:45  [ТС] 5
Цитата Сообщение от shanemac51 Посмотреть сообщение
а кроме половины года --что еще может быть
1,2 один год и два месяца и тп
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,864
10.08.2017, 20:11 6
Цитата Сообщение от peshalex Посмотреть сообщение
1,2 один год и два месяца и тп
А один год и десять месяцев - это как?
0
8 / 8 / 0
Регистрация: 18.06.2017
Сообщений: 102
10.08.2017, 20:35  [ТС] 7
Может и такое быть.

Указываем срок обучения
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,864
10.08.2017, 21:05 8
Еще раз - какое число при отображении прописью соответствует одному году десяти месяцам? Напоминаю, что месяцев 12, а числа у нас десятичные ... .
0
8 / 8 / 0
Регистрация: 18.06.2017
Сообщений: 102
10.08.2017, 21:08  [ТС] 9
1.10 - один год и десять месяцев

Не сразу понял Ваш вопрос)
0
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,140
Записей в блоге: 4
10.08.2017, 21:19 10
если я правильно поняла
1.10 - один год и десять месяцев
1.1 - один год и 1 месяц

а как это введено в таблицу, какой тип данных для поля --текстовик?
или 2 поля --одно для лет, второе для месяцев

в любом случает --это 12-36 строк, может создать справочник с полем длительности цифрами и полем длительности текстом
1
8 / 8 / 0
Регистрация: 18.06.2017
Сообщений: 102
11.08.2017, 20:46  [ТС] 11
Да все верно.

В таблицу вводится только период цифрами (поле текстовик) а письменно нужно что бы выводилось при формирования запроса

Добавлено через 23 часа 23 минуты
Цитата Сообщение от shanemac51 Посмотреть сообщение
в любом случает --это 12-36 строк, может создать справочник с полем длительности цифрами и полем длительности текстом

можете пояснить?
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
11.08.2017, 22:51 12
Если цифры после десятичного разделителя обозначают число месяцев, то пропись текстом даст функция YearMonth. Максимальный возможный срок 19 лет и 12 месяцев. Если нужно больше, то надо менять функцию, вводя анализ последней цифры года.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
'Год и месяц текстом
Public Function YearMonth(txt)
    Dim p, r, g, m, d, f1, f2
    If txt & "" = "" Then YearMonth = Null: Exit Function
    r = Replace(txt, ",", ".")
    d = Array("ноль", "один", "два", "три", "четыре", "пять", _
        "шесть", "семь", "восемь", "девять", "десять", _
        "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", _
        "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", _
        "девятнадцать")
    p = Split(r, ".")
    f1 = p(0)
    Select Case Val(f1)
        Case 1: g = "год"
        Case 2 To 4: g = "года"
        Case Else: g = "лет"
    End Select
    If UBound(p) = 0 Then
        m = Null
        f2 = Null
    Else
        f2 = d(p(1))
        Select Case Val(p(1))
            Case 1: m = "месяц"
            Case 2 To 4: m = "месяца"
            Case Else: m = "месяцев"
        End Select
    End If
    YearMonth = d(p(0)) & " " & g & (" " + f2 + " " + m)
End Function
0
Модератор
Эксперт MS Access
6012 / 2840 / 693
Регистрация: 12.06.2016
Сообщений: 7,631
12.08.2017, 01:07 13
Выложу свою поделку тоже.
Хоть она и потопорнее, но зато "половинки" ("с половиной") указываются.)))

Использование в запросе:
SQL
1
SELECT StudyDuration(ТекстовоеПоле) AS ПродолжительностьОбучения FROM Таблица
Функция в общем модуле:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Function StudyDuration(S0 As Variant) As String
 Dim S1 As Byte, _
     S2 As Byte, _
     S3 As String, _
     S4 As String, _
     S5 As String, _
     k As Byte
 k = InStr(Nz(S0), ",")
 If k - 1 < 1 Then
  S1 = Nz(S0)
 Else
  S1 = Left(S0, k - 1)
 End If
 If k = 0 Or Len(S0) = k Then
  S2 = 0
 Else
  S2 = Mid(S0, k + 1)
 End If
 Select Case S1
  Case 1
   S3 = " год"
  Case 2, 3, 4
   S3 = " года"
  Case Else
   S3 = " лет"
 End Select
 Select Case S2
  Case 1
   S4 = " месяц"
  Case 2, 3, 4
   S4 = " месяца"
  Case Else
   S4 = " месяцев"
 End Select
 If S1 = 0 Then
  If S2 <> 0 Then
   S5 = NumInWords(S2) & S4
  End If
 Else
  If S1 = 0 Then
   S5 = NumInWords(S2) & S4
  Else
   S5 = NumInWords(S1) & _
        IIf(S2 = 5, " с половиной" & S3, S3)
   If S2 <> 0 And S2 <> 5 Then
    S5 = S5 & " " & NumInWords(S2) & S4
   End If
  End If
 End If
 StudyDuration = S5
End Function
 
Private Function NumInWords(N As Byte) As String
 NumInWords = Choose(N, "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", "десять")
End Function
0
8 / 8 / 0
Регистрация: 18.06.2017
Сообщений: 102
12.08.2017, 13:14  [ТС] 14
Цитата Сообщение от mobile Посмотреть сообщение
Если цифры после десятичного разделителя обозначают число месяцев, то пропись текстом даст функция YearMonth. Максимальный возможный срок 19 лет и 12 месяцев. Если нужно больше, то надо менять функцию, вводя анализ последней цифры года.
Visual BasicВыделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
'Год и месяц текстом
Public Function YearMonth(txt)
* * Dim p, r, g, m, d, f1, f2
* * If txt & "" = "" Then YearMonth = Null: Exit Function
* * r = Replace(txt, ",", ".")
* * d = Array("ноль", "один", "два", "три", "четыре", "пять", _
* * * * "шесть", "семь", "восемь", "девять", "десять", _
* * * * "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", _
* * * * "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", _
* * * * "девятнадцать")
* * p = Split(r, ".")
* * f1 = p(0)
* * Select Case Val(f1)
* * * * Case 1: g = "год"
* * * * Case 2 To 4: g = "года"
* * * * Case Else: g = "лет"
* * End Select
* * If UBound(p) = 0 Then
* * * * m = Null
* * * * f2 = Null
* * Else
* * * * f2 = d(p(1))
* * * * Select Case Val(p(1))
* * * * * * Case 1: m = "месяц"
* * * * * * Case 2 To 4: m = "месяца"
* * * * * * Case Else: m = "месяцев"
* * * * End Select
* * End If
* * YearMonth = d(p(0)) & " " & g & (" " + f2 + " " + m)
End Function
Выдает ошибка "Необпределенная функция yearmonth"

Как быть?
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
12.08.2017, 13:24 15
Цитата Сообщение от peshalex Посмотреть сообщение
Выдает ошибка "Необпределенная функция yearmonth"
Текст функции надо записать в стандартный (общий) модуль, не в модуле формы или отчета. В запросе использовать
Visual Basic
1
2
select [имя поля с дробью года,месяца], YearMonth([имя поля с дробью года,месяца]) as ГодМесяц
from ИмяТаблицы
1
8 / 8 / 0
Регистрация: 18.06.2017
Сообщений: 102
12.08.2017, 13:29  [ТС] 16
Дробные числа прописью


Я делаю вот так, но почему то

select [имя поля с дробью года,месяца], YearMonth([имя поля с дробью года,месяца]) as ГодМесяц
from ИмяТаблицы

Не хочет там вводится
0
12.08.2017, 13:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2017, 13:29
Помогаю со студенческими работами здесь

Программа пишет прописью числа, помогите доделать ввод числа с клавиатуры
Программа пишет прописью числа, помогите доделать ввод числа с клавиатуры. using System; using...

Дробные числа
Добрый вечер. Помогите мне пожалуйста в этом задании: Нужно создать класс Fraction для работы...

Дробные числа
пишу в Builder C++ нужно дробное число отображать в едите получается примерно так: double...

Дробные числа
Доброго времени суток! Проблема такова, я не знаю как работать с дробными числами. А теперь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru