Я думаю, что истинная причина, корень этого, хорошо известен: компьютеры хранят все в нулях и единицах.
Какое это имеет отношение к целым числам, числам с плавающей точкой и делению нуля?Это довольно просто.Если у вас есть только нули и единицы, их довольно легко объединить в целые числа, как вы делаете это с десятичными цифрами.Таким образом, «10» становится двумя, «11» становится тремя и так далее.Этот вид целочисленного представления настолько естественен, что никто не подумает придумать что-нибудь еще для целых чисел, это только сделает процессоры более сложными, а вещи - более запутанными.Единственное «изобретение», которое требовалось, это выяснить, как хранить отрицательные числа, но это также очень естественно и просто, если вы начнете с того момента, что x + (- x) всегда должно быть равно нулю, без использования какого-либо специального видадополнение здесь.Вот почему 11111111 равен -1 для 8-битных целых чисел, потому что если вы добавите к нему 1, он станет 100000000, а 8-й бит усекается из-за переполнения, и вы получите ноль.Но в этом естественном формате нет места для бесконечностей и NaN, и никто не хотел изобретать неестественное представление только для этого.Что ж, я не удивлюсь, если бы кто-то на самом деле сделал это, но нет никакого способа, чтобы такой формат стал широко известным и широко используемым.
Теперь для чисел с плавающей запятой нет естественного представления.Даже если мы переведем 0,5 в двоичную форму, это все равно будет что-то вроде 0,1, только теперь у нас есть «двоичная точка» вместо десятичной точки.Но процессоры не могут естественно представлять «точку», только 1 и 0. Поэтому нужен был какой-то особый формат.Другого пути просто не было.А потом кто-то, вероятно, предложил: «Эй, ребята, пока мы находимся, почему бы не включить специальное представление для бесконечности и прочей числовой чепухи?»и так было сделано.
По этой причине эти форматы такие разные.Как обрабатывать деления на ноль, это зависит от разработчиков языка, но для плавающих точек у них есть выбор между inf / NaN и исключениями, в то время как для целых чисел у них, естественно, нет такого рода вещи.