คำถามติดแท็ก divide-by-zero

4
ฉันจะจับคำเตือน numpy ได้อย่างไรว่าเป็นข้อยกเว้น (ไม่ใช่แค่การทดสอบ)
ฉันต้องสร้างพหุนาม Lagrange ใน Python สำหรับโครงการที่ฉันทำ ฉันกำลังทำรูปแบบบาริเซนทริกเพื่อหลีกเลี่ยงการใช้ลูปแบบชัด ๆ ซึ่งตรงข้ามกับสไตล์ที่แตกต่างของนิวตัน ปัญหาที่ฉันมีคือฉันต้องจับแบ่งเป็นศูนย์ แต่ Python (หรืออาจจะเป็นก้อน) เพียงแค่ทำให้มันเป็นคำเตือนแทนข้อยกเว้นปกติ ดังนั้นสิ่งที่ฉันต้องรู้วิธีการทำคือการจับคำเตือนนี้ราวกับว่ามันเป็นข้อยกเว้น คำถามที่เกี่ยวข้องกับสิ่งที่ฉันพบในเว็บไซต์นี้ไม่ได้ตอบในวิธีที่ฉันต้องการ นี่คือรหัสของฉัน: import numpy as np import matplotlib.pyplot as plt import warnings class Lagrange: def __init__(self, xPts, yPts): self.xPts = np.array(xPts) self.yPts = np.array(yPts) self.degree = len(xPts)-1 self.weights = np.array([np.product([x_j - x_i for x_j in xPts …

4
อะไรคือการหารจำนวนเต็มที่เร็วที่สุดที่รองรับการหารด้วยศูนย์ไม่ว่าผลลัพธ์จะเป็นอย่างไร
สรุป: ฉันกำลังมองหาวิธีที่เร็วที่สุดในการคำนวณ (int) x / (int) y y==0โดยไม่ได้รับข้อยกเว้นสำหรับ แต่ฉันแค่ต้องการผลลัพธ์ตามอำเภอใจ พื้นหลัง: เมื่อทำการเข้ารหัสอัลกอริทึมการประมวลผลภาพฉันมักจะต้องหารด้วยค่าอัลฟา (สะสม) ตัวแปรที่ง่ายที่สุดคือรหัส C ธรรมดาที่มีเลขคณิตจำนวนเต็ม ปัญหาของฉันคือฉันมักจะได้รับข้อผิดพลาดการหารด้วยศูนย์สำหรับพิกเซลผลลัพธ์ด้วยalpha==0. อย่างไรก็ตามเรื่องนี้จะตรงพิกเซลที่ผลที่ไม่ได้เรื่องที่ทั้งหมด: alpha==0ฉันไม่สนใจเกี่ยวกับค่าสีของพิกเซลพร้อม รายละเอียด: ฉันกำลังมองหาสิ่งที่ต้องการ: result = (y==0)? 0 : x/y; หรือ result = x / MAX( y, 1 ); x และ y เป็นจำนวนเต็มบวก รหัสถูกเรียกใช้งานเป็นจำนวนมากในลูปที่ซ้อนกันดังนั้นฉันจึงกำลังมองหาวิธีกำจัดการแตกกิ่งก้านตามเงื่อนไข เมื่อ y ไม่เกินช่วงไบต์ฉันพอใจกับวิธีแก้ปัญหา unsigned char kill_zero_table[256] = { 1, 1, …

8
วิธีคืนค่า 0 โดยหารด้วยศูนย์
ฉันกำลังพยายามหารองค์ประกอบอย่างชาญฉลาดใน python แต่ถ้าพบศูนย์ฉันต้องการให้ผลหารเป็นศูนย์ ตัวอย่างเช่น: array1 = np.array([0, 1, 2]) array2 = np.array([0, 1, 1]) array1 / array2 # should be np.array([0, 1, 2]) ฉันสามารถใช้ for-loop ผ่านข้อมูลของฉันได้ตลอดเวลา แต่เพื่อใช้ประโยชน์จากการเพิ่มประสิทธิภาพของ numpy จริงๆฉันต้องการให้ฟังก์ชันการหารคืนค่า 0 เมื่อหารด้วยข้อผิดพลาดเป็นศูนย์แทนที่จะละเว้นข้อผิดพลาด ดูเหมือนว่าnumpy.seterr ()ไม่สามารถคืนค่าได้หากไม่มีข้อผิดพลาด ใครมีข้อเสนอแนะอื่น ๆ เกี่ยวกับวิธีที่ฉันจะได้รับสิ่งที่ดีที่สุดในขณะที่ตั้งค่าการหารของตัวเองโดยการจัดการข้อผิดพลาดเป็นศูนย์?

7
คำเตือน C ++: การหารสองด้วยศูนย์
กรณีที่ 1: #include <iostream> int main() { double d = 15.50; std::cout<<(d/0.0)<<std::endl; } มันรวบรวมโดยไม่มีคำเตือนใด ๆ infและภาพพิมพ์ ตกลง C ++ สามารถจัดการการหารด้วยศูนย์ได้ ( ดูสด ) แต่, กรณีที่ 2: #include <iostream> int main() { double d = 15.50; std::cout<<(d/0)<<std::endl; } คอมไพเลอร์ให้คำเตือนต่อไปนี้ ( ดูสด ): warning: division by zero [-Wdiv-by-zero] std::cout<<(d/0)<<std::endl; เหตุใดคอมไพเลอร์จึงแจ้งเตือนในกรณีที่สอง คือ0 != …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.