คำถามติดแท็ก floating-point

จำนวนจุดลอยตัวเป็นการประมาณของจำนวนจริงที่สามารถแสดงช่วงที่ใหญ่กว่าจำนวนเต็ม แต่ใช้หน่วยความจำในปริมาณเท่ากันในราคาที่มีความแม่นยำต่ำ หากคำถามของคุณเกี่ยวกับข้อผิดพลาดทางคณิตศาสตร์เล็กน้อย (เช่นทำไม 0.2 + 0.1 เท่ากับ 0.300000001) หรือข้อผิดพลาดในการแปลงทศนิยมโปรดอ่านหน้า "ข้อมูล" ที่ลิงก์ด้านล่างก่อนโพสต์

30
คณิตศาสตร์เลขทศนิยมถูกหักหรือไม่
Наэтотвопросестьответына กองมากเกินнарусском : Вычисленияначислахсплавающейточкойнеработают พิจารณารหัสต่อไปนี้: 0.1 + 0.2 == 0.3 -> false 0.1 + 0.2 -> 0.30000000000000004 ทำไมความไม่ถูกต้องเหล่านี้เกิดขึ้น

27
ฉันจะแยกสตริงเพื่อลอยหรือ int ได้อย่างไร
ใน Python ฉันจะแยกสตริงที่เป็นตัวเลขเช่นเดียว"545.2222"กับค่าทศนิยมที่สอดคล้องกันได้545.2222อย่างไร? หรือแยกสตริง"31"เป็นจำนวนเต็ม31? ผมแค่อยากจะรู้วิธีการแยกลอย strไปfloatและ (แยกต่างหาก) ความint ไปยังstrint

12
ทำไม GCC จึงไม่ปรับ a * a * a * a * a ถึง (a * a * a) * (a * a * a)?
ฉันกำลังทำการเพิ่มประสิทธิภาพเชิงตัวเลขในแอปพลิเคชันทางวิทยาศาสตร์ สิ่งหนึ่งที่ฉันสังเกตเห็นคือ GCC จะเพิ่มประสิทธิภาพการโทรpow(a,2)โดยรวบรวมมันเข้าไปa*aแต่การโทรpow(a,6)นั้นไม่ได้รับการปรับปรุงและจะเรียกฟังก์ชั่นห้องสมุดpowซึ่งทำให้ประสิทธิภาพช้าลงอย่างมาก (ตรงกันข้ามIntel C ++ Compiler ที่สามารถเรียกทำงานiccได้จะกำจัดการเรียกใช้ไลบรารีpow(a,6)) สิ่งที่ฉันอยากรู้คือเมื่อฉันแทนที่pow(a,6)ด้วยการa*a*a*a*a*aใช้ GCC 4.5.1 และตัวเลือก " -O3 -lm -funroll-loops -msse4" จะใช้ 5 mulsdคำสั่ง: movapd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 ในขณะที่ถ้าฉันเขียน(a*a*a)*(a*a*a)มันจะผลิต movapd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd …



30
ฉันจะตรวจสอบว่าสตริงเป็นตัวเลข (ลอย) ได้อย่างไร?
วิธีที่ดีที่สุดในการตรวจสอบว่าสตริงสามารถแสดงเป็นตัวเลขใน Python ได้อย่างไร ฟังก์ชั่นที่ฉันมีอยู่ในขณะนี้คือ: def is_number(s): try: float(s) return True except ValueError: return False ซึ่งไม่เพียง แต่น่าเกลียดและช้าเท่านั้น อย่างไรก็ตามฉันไม่พบวิธีที่ดีกว่าเพราะการโทรfloatในฟังก์ชั่นหลักนั้นแย่กว่าเดิม

5
ทำไมการเปลี่ยน 0.1f ถึง 0 ทำให้ประสิทธิภาพลดลง 10 เท่า?
ทำไมรหัสนี้ const float x[16] = { 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6}; const float z[16] = {1.123, 1.234, 1.345, 156.467, 1.578, 1.689, 1.790, 1.812, 1.923, 2.034, 2.145, 2.256, 2.367, 2.478, 2.589, 2.690}; float y[16]; for (int i = 0; i …

15
ทำไมไม่ใช้ Double หรือ Float เพื่อเป็นตัวแทนของสกุลเงิน?
ฉันได้รับการบอกเสมอว่าไม่เคยเป็นตัวแทนของเงินdoubleหรือfloatประเภทและคราวนี้ฉันตั้งคำถามกับคุณ: ทำไม? ฉันแน่ใจว่ามีเหตุผลที่ดีมากฉันไม่ทราบว่ามันคืออะไร

7
มีประเภทอินพุตแบบลอยใน HTML5 หรือไม่
จากhtml5.orgแอตทริบิวต์ "value" ของประเภทอินพุตหากระบุและไม่ว่างต้องมีค่าที่เป็นเลขทศนิยมที่ถูกต้อง กระนั้นก็เป็นเพียงแค่ (ใน Chrome เวอร์ชันล่าสุด), การควบคุม "updown" ด้วยจำนวนเต็มไม่ใช่ลอยตัว: <input type="number" id="totalAmt"></input> เรียกใช้ข้อมูลโค้ดซ่อนผลลัพธ์ขยายตัวอย่างข้อมูล มีองค์ประกอบอินพุตแบบ floating point ที่เป็นพื้นฐานของ HTML5 หรือวิธีการทำให้ชนิดอินพุตตัวเลขทำงานกับการลอยได้ไม่ใช่ ints หรือไม่? หรือฉันต้องหันไปใช้ปลั๊กอิน jQuery UI?

30
หมายเลขรูปแบบที่จะแสดงทศนิยม 2 ตำแหน่งเสมอ
ฉันต้องการจัดรูปแบบตัวเลขของฉันให้แสดงทศนิยม 2 ตำแหน่งเสมอการปัดเศษที่เกี่ยวข้อง ตัวอย่าง: number display ------ ------- 1 1.00 1.341 1.34 1.345 1.35 ฉันได้ใช้สิ่งนี้: parseFloat(num).toFixed(2); แต่มันแสดง1เป็นมากกว่า11.00

30
วิธีการใช้ค่าขั้นตอนทศนิยม ()
มีวิธีการก้าวระหว่าง 0 ถึง 1 คูณ 0.1 หรือไม่? ฉันคิดว่าฉันสามารถทำสิ่งต่อไปนี้ได้ แต่ล้มเหลว: for i in range(0, 1, 0.1): print i แต่มันบอกว่าอาร์กิวเมนต์ขั้นตอนไม่สามารถเป็นศูนย์ได้ซึ่งฉันไม่ได้คาดไว้

11
ฉันจะบังคับให้การหารเป็นจุดลอยตัวได้อย่างไร กองการปัดเศษลงเป็น 0?
ฉันมีค่าจำนวนเต็มสองค่าaและb, แต่ฉันต้องการอัตราส่วนในจุดลอย ฉันรู้ว่าa < bฉันและฉันต้องการที่จะคำนวณa / bดังนั้นหากผมใช้จำนวนเต็มส่วนฉันมักจะได้รับ 0 aกับส่วนที่เหลือของ ฉันcจะบังคับให้เป็นเลขทศนิยมใน Python ได้อย่างไร? c = a / b

14
แปลงทศนิยมให้เป็นสองเท่า
ฉันต้องการใช้ a Track-Barเพื่อเปลี่ยนFormความทึบของ นี่คือรหัสของฉัน: decimal trans = trackBar1.Value / 5000; this.Opacity = trans; เมื่อฉันสร้างแอปพลิเคชันมันทำให้เกิดข้อผิดพลาดต่อไปนี้: ไม่สามารถแปลงประเภทdecimalเป็นdouble ผมได้ลองใช้transและdoubleแต่แล้วControlไม่ทำงาน รหัสนี้ทำงานได้ดีในโครงการ VB.NET ที่ผ่านมา

30
วิธีจัดการกับความแม่นยำเลขทศนิยมใน JavaScript?
ฉันมีสคริปต์ทดสอบหุ่นจำลองต่อไปนี้: function test() { var x = 0.1 * 0.2; document.write(x); } test(); เรียกใช้ข้อมูลโค้ดซ่อนผลลัพธ์ขยายตัวอย่างข้อมูล สิ่งนี้จะพิมพ์ผลลัพธ์0.020000000000000004ขณะที่ควรพิมพ์0.02(ถ้าคุณใช้เครื่องคิดเลข) เท่าที่ฉันเข้าใจนี่เป็นเพราะข้อผิดพลาดในความแม่นยำคูณจุดลอย ใครบ้างมีทางออกที่ดีดังนั้นในกรณีเช่นนี้ฉันได้ผลลัพธ์ที่ถูกต้อง0.02? ฉันรู้ว่ามีฟังก์ชั่นเช่นtoFixedหรือการปัดเศษเป็นความเป็นไปได้อีกอย่างหนึ่ง แต่ฉันต้องการให้พิมพ์จำนวนทั้งหมดโดยไม่ต้องตัดและปัดเศษ แค่อยากรู้ว่าคุณมีวิธีแก้ปัญหาที่ดีและสง่างามหรือไม่ แน่นอนมิฉะนั้นฉันจะปัดเป็นตัวเลข 10 หลัก

5
ทำไม Math.round (0.49999999999999994) ส่งคืน 1
ในโปรแกรมต่อไปนี้คุณจะเห็นว่าแต่ละค่าน้อยกว่า.5จะถูกปัดเศษลงยกเว้น0.5จะถูกปัดเศษลงยกเว้น for (int i = 10; i >= 0; i--) { long l = Double.doubleToLongBits(i + 0.5); double x; do { x = Double.longBitsToDouble(l); System.out.println(x + " rounded is " + Math.round(x)); l--; } while (Math.round(x) > i); } พิมพ์ 10.5 rounded is 11 10.499999999999998 rounded is 10 9.5 rounded …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.