Нахождение произведения элементов матрицы через класс

А чего вы так шарахнулись от "нецелого числа с e"? И, кстати, почему вы решили, что число 1.234е5 нецелое? Очень даже целое: это 123400 (

-- школьная программа). Это с одной стороны.

А с другой стороны, и для типа результата, и для типа элементов матрицы вы указали

float

. Так чего же удивляться, если в качестве результата выводится число с плавающей точкой?

Другой вопрос, что при использовании типа с плавающей точкой в какой-то момент будет появляться погрешность вычисления произведения, поскольку для

float

количество значащих цифр мантиссы, если не ошибаюсь, 6 (для

double

- 15). Поэтому результат будет округляться.

Так что программа ваша работает правильно. Другое дело, что по ней сильно напильничком надо пройтись. Основные огрехи:

Отсутствует деструктор, освобождающий память.
Не выполняется "Правило пяти" (или хотя бы "Правило трёх"). Если писать лень, то хотя бы обозначьте с = delete.
Хранить и использовать второе измерение (m) не нужно: главная диагональ бывает только у квадратных матриц.
В main() не обязательно динамически создавать матрицу. Достаточно написать matr A(5, 'A');. Сщщтветственно обращения к методам будут через точку.

Добавлено через 19 минут

Вот демонстрация погрешности вычислений для разных типов для вашей программы (для матрицы 8х8 с одинаковым набором рандомных чисел в диапазоне -10..10):

Тип                  Все цифры результата    Отображение результата с количеством цифр по умолчанию
---------------------------------------------------------------------------------------------------
long long int        45873336806277120       45873336806277120
double               45873336806277120       4.58733e+16
float                45873334507798528       4.58733e+16