ขอถามผู้รู้เรื่องของ numpy หน่อยครับ

คือผมลองเขียนโปรแกรม factorial โดยใช้numpy ดู (พึ่งเริ่มหัดใช้ numpy)

from numpy import *
n = input("factorial : ")
print multiply.reduce(array(arange(1,n+1)))

ผมใส่ไป 16
factorial : 16
2004189184

ผมใส่ไป17 ค่าเป็นลบ
factorial : 17
-288522240

ผมใส่ไป มากๆ สัก100 มันจะกลายเป็นศูนย์
factorial : 100
0

ไม่ทราบว่าเป็นที่ range ของnumpy หรือเปล่า ครับ พอเลขมากจะทำให้ overflow
หรือผมสามารถใส่code เพิ่มได้ถ้าโปรแกรมเรามีจำนวนตัวเลขที่มาก

แนะนำหน่อยครับ ขอบคุณครับ

ปล. ผมแก้เป็นใส่สีแล้วนะครับ ขอบคุณครับ

sugree's picture

แปลงค่าเป็น long ก่อนส่งให้ reduce

from numpy import multiply,arange
n = 17
multiply.reduce(map(long,arange(1,n+1)))

วิธีใส่สีอ่านที่ http://www.codenone.com/node/20

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น