คำถามติดแท็ก precision

สำหรับคำถามที่เกี่ยวข้องกับความแม่นยำของตัวเลขในการเขียนโปรแกรม เพื่อความแม่นยำในการจัดหมวดหมู่ให้ใช้แท็ก [การเรียกคืนความแม่นยำ]


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

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

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

3
ฉันจะตีความความแม่นยำและมาตราส่วนของตัวเลขในฐานข้อมูลได้อย่างไร
ฉันมีคอลัมน์ต่อไปนี้ระบุไว้ในฐานข้อมูล: ฐานสิบ (5,2) คนเราตีความสิ่งนี้ได้อย่างไร ตามคุณสมบัติในคอลัมน์ตามที่ดูในสตูดิโอการจัดการเซิร์ฟเวอร์ SQL ฉันจะเห็นว่ามันหมายถึง: ทศนิยม (ความแม่นยำเป็นตัวเลขขนาดสเกลตัวเลข) ความแม่นยำและสเกลหมายถึงอะไรในแง่ของจริง มันจะง่ายต่อการตีความนี้เป็นทศนิยมที่มี 5 หลักและสองตำแหน่งทศนิยม ... เช่น 12345.12 ป.ล. ฉันสามารถระบุคำตอบที่ถูกต้องจากเพื่อนร่วมงานได้ แต่มีปัญหาในการหาคำตอบออนไลน์ เช่นนี้ฉันต้องการมีคำถามและคำตอบเอกสารที่นี่ใน stackoverflow สำหรับการอ้างอิงในอนาคต

11
รับ DateTime ตอนนี้ด้วยความแม่นยำมิลลิวินาที
ฉันจะสร้างการประทับเวลาตามเวลาจริงด้วยความแม่นยำเป็นมิลลิวินาทีได้อย่างไร ฉันต้องการบางอย่างเช่น 16.4.2013 9: 48: 00: 123 เป็นไปได้ไหม ฉันมีแอปพลิเคชันที่ฉันสุ่มค่า 10 ครั้งต่อวินาทีและฉันต้องแสดงในกราฟ

6
เหตุใดตัวเลขจุดลอยตัวจึงไม่ถูกต้อง
ทำไมบางตัวเลขสูญเสียความแม่นยำเมื่อเก็บไว้เป็นตัวเลขทศนิยม? ตัวอย่างเช่นตัวเลขทศนิยม9.2สามารถแสดงได้อย่างแม่นยำตามอัตราส่วนของจำนวนเต็มทศนิยมสองตัว ( 92/10) ซึ่งทั้งสองสามารถแสดงอย่างถูกต้องในรูปแบบไบนารี ( 0b1011100/0b1010) อย่างไรก็ตามอัตราส่วนเดียวกันที่เก็บไว้เป็นเลขทศนิยมจะไม่เท่ากับ9.2: 32-bit "single precision" float: 9.19999980926513671875 64-bit "double precision" float: 9.199999999999999289457264239899814128875732421875 หมายเลขธรรมดาอย่างเห็นได้ชัดว่าเป็นอย่างไร "ใหญ่เกินไป" ในการแสดงผลในหน่วยความจำ64 บิต ?

30
ผลลัพธ์ที่ไม่คาดคิดเมื่อทำงานกับจำนวนเต็มที่มากในภาษาที่ตีความ
ฉันพยายามที่จะได้รับผลรวมของ1 + 2 + ... + 1000000000แต่ฉันได้รับผลตลกใน PHP และNode.js PHP $sum = 0; for($i = 0; $i <= 1000000000 ; $i++) { $sum += $i; } printf("%s", number_format($sum, 0, "", "")); // 500000000067108992 Node.js var sum = 0; for (i = 0; i <= 1000000000; i++) { sum += i …

3
เหตุใดการแปลงแบบไปกลับผ่านสตริงจึงไม่ปลอดภัยสำหรับการดับเบิล
เมื่อเร็ว ๆ นี้ฉันต้องเรียงลำดับคู่เป็นข้อความแล้วจึงนำกลับมาใช้ใหม่ ดูเหมือนว่าค่าจะไม่เทียบเท่า: double d1 = 0.84551240822557006; string s = d1.ToString("R"); double d2 = double.Parse(s); bool s1 = d1 == d2; // -> s1 is False แต่ตามMSDN: สตริงรูปแบบตัวเลขมาตรฐานตัวเลือก "R" ควรจะรับประกันความปลอดภัยแบบไปกลับ ตัวระบุรูปแบบ round-trip ("R") ถูกใช้เพื่อให้แน่ใจว่าค่าตัวเลขที่ถูกแปลงเป็นสตริงจะถูกวิเคราะห์คำกลับเป็นค่าตัวเลขเดียวกัน ทำไมสิ่งนี้ถึงเกิดขึ้น
185 c#  double  tostring  precision 

11
อะไรคือความแตกต่างระหว่างการดำเนินการจุดเดียวที่มีความแม่นยำและความแม่นยำสองเท่า
อะไรคือความแตกต่างระหว่างการดำเนินการจุดที่มีความแม่นยำเดียวและการดำเนินการที่มีความแม่นยำสองเท่า ฉันสนใจโดยเฉพาะอย่างยิ่งในแง่การปฏิบัติที่เกี่ยวข้องกับเครื่องเล่นวิดีโอเกม ตัวอย่างเช่น Nintendo 64 มีตัวประมวลผล 64 บิตหรือไม่และหากเป็นเช่นนั้นหมายความว่าสามารถดำเนินการกับจุดที่มีความแม่นยำสูงได้หรือไม่ PS3 และ Xbox 360 สามารถดึงการดำเนินการจุดลอยตัวที่มีความแม่นยำสองเท่าหรือเฉพาะความแม่นยำเพียงอย่างเดียวและโดยทั่วไปแล้วคือความสามารถในการใช้ความแม่นยำสองเท่าที่มีการใช้งาน (หากมีอยู่)

10
คณิตศาสตร์เลขทศนิยมนั้นสอดคล้องกันใน C # หรือไม่ เป็นไปได้ไหม
ไม่นี่ไม่ใช่คำถาม"ทำไมจึงเป็น (1 / 3.0) * 3! = 1" ฉันได้อ่านเกี่ยวกับคะแนนจำนวนมากเมื่อเร็ว ๆ นี้; วิธีการคำนวณเดียวกันอาจให้ผลลัพธ์ที่แตกต่างกันในการตั้งค่าสถาปัตยกรรมหรือการเพิ่มประสิทธิภาพที่แตกต่างกัน นี่เป็นปัญหาสำหรับวิดีโอเกมที่เก็บรีเพลย์หรือเครือข่ายเพียร์ทูเพียร์ (ตรงข้ามกับเซิร์ฟเวอร์ - ไคลเอนต์) ซึ่งพึ่งพาลูกค้าทั้งหมดที่สร้างผลลัพธ์เดียวกันทุกครั้งที่รันโปรแกรม - ความคลาดเคลื่อนเล็กน้อยในหนึ่งเดียว การคำนวณ floating-point สามารถนำไปสู่สถานะเกมที่แตกต่างกันอย่างมากบนเครื่องที่แตกต่างกัน (หรือแม้แต่ในเครื่องเดียวกัน! ) นี้เกิดขึ้นแม้กระทั่งในหมู่ประมวลผลว่า "ตาม" มาตรฐาน IEEE-754หลักเพราะบางหน่วยประมวลผล (คือ x86) ใช้ความแม่นยำขยายคู่ นั่นคือพวกเขาใช้การลงทะเบียน 80 บิตเพื่อทำการคำนวณทั้งหมดจากนั้นตัดเป็น 64- บิตหรือ 32 บิตซึ่งนำไปสู่ผลลัพธ์การปัดเศษที่แตกต่างกันกว่าเครื่องที่ใช้ 64- บิตหรือ 32- บิตสำหรับการคำนวณ ฉันเห็นวิธีแก้ไขปัญหาออนไลน์หลายวิธี แต่ทั้งหมดสำหรับ C ++ ไม่ใช่ C #: ปิดใช้งานโหมดขยายความแม่นยำสองเท่า …

3
ทำไมการเพิ่ม 0.1 หลาย ๆ ครั้งจึงไม่สูญเสีย
ฉันรู้ว่า0.1เลขทศนิยมไม่สามารถแสดงว่ามีจำนวนไบนารี จำกัด ( คำอธิบาย ) ดังนั้นจะสูญเสียบางอย่างแม่นยำและจะไม่ตรงdouble n = 0.1 0.1บนมืออื่น ๆสามารถแสดงว่าเพราะมันเป็น0.50.5 = 1/2 = 0.1b ต้องบอกว่ามันเป็นที่เข้าใจว่าการเพิ่ม0.1 สามครั้งจะไม่ให้0.3รหัสดังต่อไปนี้false: double sum = 0, d = 0.1; for (int i = 0; i < 3; i++) sum += d; System.out.println(sum == 0.3); // Prints false, OK แต่แล้วการเพิ่ม0.1 ห้าครั้งจะให้ได้0.5อย่างไร พิมพ์รหัสต่อไปนี้true: double sum = 0, …

21
รักษาความแม่นยำด้วย double ใน Java
public class doublePrecision { public static void main(String[] args) { double total = 0; total += 5.6; total += 5.8; System.out.println(total); } } พิมพ์รหัสข้างต้น: 11.399999999999 ฉันจะได้รับสิ่งนี้เพื่อพิมพ์ (หรือใช้เป็น) 11.4 ได้อย่างไร

13
คุณจะปัดเศษสองเท่าใน Dart ให้อยู่ในระดับความแม่นยำที่กำหนดหลังจากจุดทศนิยมได้อย่างไร
ให้สองเท่าฉันต้องการปัดเศษเป็นจำนวนจุดที่กำหนดหลังจุดทศนิยมคล้ายกับฟังก์ชัน round () ของ PHP สิ่งที่ใกล้เคียงที่สุดที่ฉันสามารถพบได้ในเอกสาร Dart คือ double.toStringAsPrecision () แต่นี่ไม่ใช่สิ่งที่ฉันต้องการมากนักเพราะมันมีตัวเลขก่อนจุดทศนิยมในจุดรวมของความแม่นยำ ตัวอย่างเช่นการใช้ toStringAsPrecision (3): 0.123456789 rounds to 0.123 9.123456789 rounds to 9.12 98.123456789 rounds to 98.1 987.123456789 rounds to 987 9876.123456789 rounds to 9.88e+3 เมื่อขนาดของตัวเลขเพิ่มขึ้นฉันจะสูญเสียความแม่นยำตามลำดับหลังจากตำแหน่งทศนิยม

8
ความแตกต่างระหว่าง toFixed () และ toPrecision ()?
ฉันยังใหม่กับ JavaScript และเพิ่งค้นพบtoFixed()และtoPrecision()ปัดเศษตัวเลข อย่างไรก็ตามฉันคิดไม่ออกว่าความแตกต่างระหว่างทั้งสองคืออะไร อะไรคือความแตกต่างระหว่างnumber.toFixed()และnumber.toPrecision()?

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