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

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

30
วิธีที่มีประสิทธิภาพมากที่สุดสำหรับการเปรียบเทียบแบบลอยและแบบคู่คืออะไร
อะไรจะเป็นวิธีที่มีประสิทธิภาพมากที่สุดในการเปรียบเทียบค่าdoubleสองหรือสองfloatค่า การทำเช่นนี้ไม่ถูกต้อง: bool CompareDoubles1 (double A, double B) { return A == B; } แต่สิ่งที่ชอบ: bool CompareDoubles2 (double A, double B) { diff = A - B; return (diff < EPSILON) && (-diff < EPSILON); } ดูเหมือนว่าการแปรรูปขยะ ไม่มีใครรู้ว่าเครื่องมือเปรียบเทียบที่ชาญฉลาดกว่านี้คือใคร?

26
วิธีการจัดรูปแบบตัวเลขทศนิยมให้เป็นสตริงโดยไม่มีทศนิยม 0 ที่ไม่จำเป็น
64 บิตคู่สามารถเป็นตัวแทนของจำนวนเต็ม +/- 2 53ตรง จากข้อเท็จจริงนี้ฉันเลือกที่จะใช้ double type เป็น single type สำหรับทุกประเภทของฉันเนื่องจากเลขจำนวนเต็มที่ใหญ่ที่สุดของฉันคือแบบ 32 บิต แต่ตอนนี้ฉันต้องพิมพ์จำนวนเต็มหลอกเหล่านี้ แต่ปัญหาคือพวกเขายังผสมกับคู่จริง ดังนั้นฉันจะพิมพ์คู่เหล่านี้อย่างดีใน Java ได้อย่างไร ฉันได้ลองString.format("%f", value)แล้วซึ่งอยู่ใกล้ยกเว้นฉันได้รับจำนวนมากต่อท้ายศูนย์สำหรับค่าขนาดเล็ก นี่คือตัวอย่างผลลัพธ์ของ %f 232.00000000 0.18000000000 1237875192.0 4.5800000000 0.00000000 1.23450000 สิ่งที่ฉันต้องการคือ: 232 0.18 1237875192 4.58 0 1.2345 แน่นอนว่าฉันสามารถเขียนฟังก์ชันเพื่อตัดค่าศูนย์เหล่านั้น แต่นั่นเป็นการสูญเสียประสิทธิภาพเนื่องจากการจัดการสตริง ฉันสามารถทำได้ดีกว่าด้วยรหัสรูปแบบอื่นได้หรือไม่ แก้ไข คำตอบของ Tom E. และ Jeremy S. นั้นไม่สามารถยอมรับได้เนื่องจากพวกเขาทั้งคู่ปัดทศนิยมเป็นทศนิยม 2 ตำแหน่งโดยพลการ โปรดเข้าใจปัญหาก่อนที่จะตอบ …

24
คุณจะปัดเศษตัวเลขใน Python อย่างไร
ปัญหานี้กำลังฆ่าฉัน หนึ่งรอบหมายเลขขึ้นในงูหลามได้อย่างไร ฉันลองปัดเศษ (ตัวเลข) แต่ปัดเศษตัวเลขลง ตัวอย่าง: round(2.3) = 2.0 and not 3, what I would like ฉันลอง int (หมายเลข + .5) แต่มันปัดเศษตัวเลขลงอีกรอบ! ตัวอย่าง: int(2.3 + .5) = 2 จากนั้นฉันลองรอบ (หมายเลข + .5) แต่มันจะไม่ทำงานในกรณีขอบ ตัวอย่าง: WAIT! THIS WORKED! กรุณาแนะนำ

5
ตัวระบุรูปแบบที่ถูกต้องสำหรับ double ใน printf
ตัวระบุรูปแบบที่ถูกต้องสำหรับdoubleใน printf คืออะไร มัน%fหรือมันคือ%lf? ฉันเชื่อว่ามัน%fแต่ฉันไม่แน่ใจ ตัวอย่างโค้ด #include <stdio.h> int main() { double d = 1.4; printf("%lf", d); // Is this wrong? }


12
ความแตกต่างระหว่าง float และ double คืออะไร?
ฉันได้อ่านเกี่ยวกับความแตกต่างระหว่างความแม่นยำสองเท่าและความแม่นยำเดี่ยว อย่างไรก็ตามในกรณีส่วนใหญ่floatและdoubleดูเหมือนว่าจะใช้แทนกันคือการใช้อย่างใดอย่างหนึ่งดูเหมือนจะไม่ส่งผลกระทบต่อผล เป็นกรณีนี้จริงเหรอ? เมื่อไหร่ที่จะลอยและเปลี่ยนเป็นสองเท่าได้? ความแตกต่างระหว่างพวกเขาคืออะไร?


15
วิธีแยกวิเคราะห์ทศนิยมด้วยทศนิยมสองตำแหน่งใน javascript
ฉันมีรหัสต่อไปนี้ ฉันอยากได้มันถ้า price_result เท่ากับจำนวนเต็มสมมุติว่า 10 แล้วฉันอยากจะเพิ่มทศนิยมสองตำแหน่ง ดังนั้น 10 น่าจะเป็น 10.00 หรือถ้ามันเท่ากับ 10.6 จะเท่ากับ 10.60 ไม่แน่ใจว่าจะทำอย่างไร price_result = parseFloat(test_var.split('$')[1].slice(0,-1));

11
มันอันตรายแค่ไหนในการเปรียบเทียบค่าทศนิยม
ฉันรู้ว่าUIKitใช้CGFloatเพราะระบบพิกัดความละเอียดอิสระ แต่ทุกครั้งที่ผมต้องการตรวจสอบเช่นถ้าframe.origin.xเป็น0มันทำให้ฉันรู้สึกป่วย if (theView.frame.origin.x == 0) { // do important operation } ไม่ได้เป็นCGFloatความเสี่ยงที่จะบวกเท็จเมื่อเทียบกับ==, <=, >=, <, >? มันเป็นจุดลอยตัวและพวกเขามีปัญหาที่ไม่แม่นยำ0.0000000000041เช่น: การObjective-Cจัดการภายในนี้เกิดขึ้นเมื่อทำการเปรียบเทียบหรือเกิดขึ้นที่สิ่งorigin.xที่อ่านเป็นศูนย์ไม่ได้เปรียบเทียบกับ0ความจริง

6
วิธีแปลง float เป็น int ด้วย Java
ฉันใช้บรรทัดต่อไปนี้เพื่อแปลง float เป็น int แต่ไม่แม่นยำเท่าที่ฉันต้องการ: float a=8.61f; int b; b=(int)a; ผลลัพธ์คือ: 8(ควรเป็น9) เมื่อa = -7.65fใดผลลัพธ์คือ: -7(ควรเป็น-8) วิธีที่ดีที่สุดที่จะทำคืออะไร?
342 java  floating-point  int 

11
ฉันจะพิมพ์ค่าสองเท่าด้วยความแม่นยำเต็มที่ใช้ cout ได้อย่างไร
ดังนั้นฉันจึงได้คำตอบสำหรับคำถามสุดท้ายของฉัน(ฉันไม่รู้ว่าทำไมฉันไม่คิดอย่างนั้น) ฉันกำลังพิมพ์การdoubleใช้coutที่ปัดเศษเมื่อฉันไม่ได้คาดหวัง ฉันจะcoutพิมพ์doubleด้วยความแม่นยำได้อย่างไร

15
เป็นวิธีที่ดีที่สุดในการเปรียบเทียบลอยสำหรับความเท่าเทียมกันเกือบในงูหลามคืออะไร?
เป็นที่ทราบกันดีว่าการเปรียบเทียบลอยเพื่อความเท่าเทียมนั้นมีปัญหาเล็กน้อยเนื่องจากปัญหาการปัดเศษและความแม่นยำ ตัวอย่างเช่น: https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/ วิธีที่แนะนำในการจัดการกับสิ่งนี้ใน Python คืออะไร? มีฟังก์ชั่นห้องสมุดมาตรฐานสำหรับที่นี่ไหม?

10
JavaScript แสดงทศนิยมเป็นทศนิยม 2 ตำแหน่ง
ฉันต้องการที่จะแสดงจำนวนทศนิยม 2 ตำแหน่ง ฉันคิดว่าฉันสามารถใช้toPrecision(2)ใน JavaScript แต่ถ้าตัวเลขคือฉันได้รับ0.05 0.0500ฉันอยากให้มันคงเดิม เห็นมันบนJSbin วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ฉันสามารถนึกถึงการแก้ปัญหาบางอย่างได้ แต่ฉันคิดว่าฉันหวังว่าบางสิ่งเช่นนี้จะถูกสร้างขึ้นมา?

2
0.0039215689 คงที่คืออะไร
ฉันยังคงเห็นนี้คงปรากฏขึ้นในไฟล์ส่วนหัวกราฟิกต่างๆ 0.0039215689 ดูเหมือนว่าจะมีบางอย่างที่เกี่ยวกับสีอาจจะ? นี่คือการโจมตีครั้งแรกใน Google : void RDP_G_SETFOGCOLOR(void) { Gfx.FogColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f; Gfx.FogColor.G = _SHIFTR(w1, 16, 8) * 0.0039215689f; Gfx.FogColor.B = _SHIFTR(w1, 8, 8) * 0.0039215689f; Gfx.FogColor.A = _SHIFTR(w1, 0, 8) * 0.0039215689f; } void RDP_G_SETBLENDCOLOR(void) { Gfx.BlendColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f; Gfx.BlendColor.G = …

6
สองเท่ากับ BigDecimal?
ฉันต้องคำนวณตัวแปรทศนิยมบางอย่างและเพื่อนร่วมงานของฉันแนะนำให้ฉันใช้BigDecimalแทนdoubleเพราะมันจะแม่นยำมากขึ้น แต่ฉันต้องการรู้ว่ามันคืออะไรและทำอย่างไรให้ได้ประโยชน์สูงสุดBigDecimal?

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