Преобразования двоично-десятичных чисел
Тип bcd - это определяемый тип, отличный от float, double
или long double. Десятичная арифметика выполняется только когда
хотя бы один операнд имеет тип bcd.
Для преобразования двоично-десятичного числа обратно к обычной системе счисления с основанием 2 (тип float, double или long
double), служит функция-элемент real класса bcd. Функция real выполняет все необходимые преобразования к типам long, double или
lognd double, хотя такое преобразование не выполняется автоматически. Функция real выполняет все необходимые преобразования к
типу long double, который может быть затем преобразован к другим
типам при помощи обычных средств языка Си. Например:
/* Печать чисел BCD */
#include <bcd.h>
#include <iostream.h>
#include <stdio.h>
void main(void) {
bcd a = 12.1;
double x = real(a); /* преобразование для печати
printf("\na = %Lg", real(a));
printf("\na = %g", (double)real(a));
cout << "\na =" << a; /* рекомендуемый метод
Отметим, что поскольку printf не выполняет контроль типа аргументов, спецификатор формата должен иметь L, если передается
значение real(a) типа long double.