Вычисления с плавающей точкой?
«Насколько я понимаю, после запятой в типе double может быть не больше 15 знаков после запятой.» — это откуда Вы взяли?

Во первых в floating-point арифметике нет различий между «до запятой» и «после запятой» — всё переносится в «после запятой», даже та «1» или «9», что была у вас в целой части (это объясняет, случай с sqrt(2) (15-й знак был до запятой), а sqrt(98) — просто последний знак =0 ).

Во-вторых не забываем, что арифметика двоичная, а не десятичная, так что ровно 15 знаков не всегда будет, могут быть ещё чудеса. Ну и IEEE 754.
Как вы получили такие результаты?
Функция sqrt() не занимается выводом на экран, она лишь вычисляет выражение. И должна делать это с макимальной доступной [для типа данных] точностью.
Вот я пишу: 
> sqrt(2)
ans =
 1.4142
А вот:
> fprintf('%.16f\n',sqrt(2))
1.4142135623730951

Matlab 2010b