Друзья,функция уменьшения дает отрицательный ответ
Я пытаюсь изучить кодировку Scala и изучить функцию reduce() на данный момент. Я не понимаю, почему следующий фрагмент кода, чтобы умножить все числа в списке дает мне отрицательный результат:
val inputRDD=sc.parallelize(List(1,2,3,3,4,5,6,7,8,9,19,22,21,25,34,56,4,32,56,70))
val result=inputRDD.reduce((x,y)=>x*y)
println(result)`
я получаю ответ «-1619001344», когда я запускаю приведенный выше код. Если я попытаюсь использовать «+» в сокращении вместо «*», я получаю правильную сумму, но не иначе. Я также попытался преобразовать результат в Int, String и Long
Вы пробовали рассчитать фактический результат? Вероятно, это переполнение. –
Продукт 228235320014929920000, который не вписывается в 32 или 64-битное целое число, поэтому действительно переполняется. – WhiteViking
Итак, если я все еще _did_ должен умножить все эти числа и вернуть результат, возможно ли это с помощью какого-либо другого типа или метода данных? –