หนึ่งในปัญหาคลาสิก เวลาเขียนโปรแกรมที่ทุกคนต้องเจอเลย
ก็คือการบวกลบเลขทศนิยมในภาษาโปรแกรม ของบางภาษา นี้แหละ
เช่น JavaScript, Python, Perl, C#, C, C++, Java, PHP, Fortran
(และอื่นๆ อีกหลายภาษาที่ไม่ได้กล่าวถึง)
.
หลายครั้งที่มันอาจเพี้ยนได้ เช่น
👉 0.1+0.2 ไม่ได้เท่ากับ 0.3
แต่ได้เป็น 0.30000000000000004
.
👉 หรือ 0.1 บวกกัน 10 ครั้ง ก็ไม่ได้เป็น 1
แต่ได้เป็น 0.9999999999999999
.
คนเขียนโปรแกรมเจอแบบนี้เข้าไป
ก็เหมือนมวยโดนหมัดน๊อคมึนงงในดงโค้ด
:
:
แต่ใช่ว่ามันจะเพี้ยนทุกครั้ง ซะเมื่อไร เช่น
0.5+0.5 = 1 (ถูกต้องเป๊ะ)
0.2+0.3 = 0.5 (บังเอิญไม่เพี้ยน)
.
สำหรับ กรณี 0.2 กับ 0.3 มันถูกตัดเศษเหลือเป็น
0.2000000000000000111022302462515654042363166809082031250
กับ
0.2999999999999999888977697537484345957636833190917968750
พอบวกกันจึงได้ 0.5 พอดี แบบฟลุ๊คๆๆ ซึ่งไม่ควรทำได้
(ตรงสอบดูได้ 0.2+0.3 == 0.5 ได้ค่าออกมาเป็น true)
:
:
สาเหตุที่เป็นเช่นนี้
ก็เพราะว่าคอมพิวเตอร์มันรู้จักแต่ เลขฐาน2 อะนะ
ต่อให้เราเขียนโค้ดใช้เลขฐาน10 ก็ตาม
สุดท้ายเวลาโค้ดมันถูกรัน ก็จะกลายเป็นเลขฐาน 2 อยู่ดี
.
😨 แล้วก็เป็นความซวยที่จะมาเยือนคนเขียนโปรแกรม
เพราะเวลาแปลงเลขฐาน10 ไปเป็นเลขฐาน 2
บางกรณีมันแปลงแล้ว ดันได้ตัวเลขที่ไม่รู้จบเสียด้วยซิ
จึงทำให้การเก็บทศนิยมผิดเพี้ยนไปได้
.
สำหรับรูปแบบการจัดเก็บเลขทศนิยม ในหลายภาษา
เขาจะนิยมใช้มาตรฐาน IEEE-754 floating point
เช่น 0.1 จะถูกมองว่าคือ 1/10
.
เมื่อเก็บเป็นเลขทศนิยมฐานสอง
ตามมาตรฐาน IEEE-754 floating point จะได้เป็น
0.0001100110011001100110011001100110011001100110011...
เป็นทศนิยมไม่รู้จบในรูปเลขฐานสอง ....นี้คือสิ่งที่คอมมองเห็น
.
พอคอมแปลงกลับมาเป็นทศนิยม เพื่อให้มนุษย์โลกอ่านเข้าใจ
ในรูปฐาน 10 ก็จะได้เป็น
0.1000000000000000055511151231257827021181583404541015625
ทว่าคอมมันจะตัดให้เหลือแค่ 0.1 (คนจึงเห็นแค่นี้)
:
🤔 ซึ่งความเพื้ยนแบบนี้
แน่นอนทำให้เกิดบั๊กเวลาคำนวณตัวเลข
- ยิ่งงานต้องการคำตอบที่ละเอียดมาก เช่น งานธนาคาร ก็จะประสบปัญหา เป็นต้น
- หรือเวลานำไปใช้ในเงื่อนไขเปรียบเทียบพวก if, while ฯลฯ ก็อาจมีบั๊กเกิดขึ้นได้ เป็นต้น
.
😀 แต่ไม่ต้องห่วง ในหลายๆ ภาษาเขาจะมีวิธีแก้ปัญหานี้อยู่ครับ
ป้องกันการคำนวณตัวเลข ไม่ให้คลาดเคลื่อน เช่น
- ใน Java ก็จะมีคลาส BigDecimal เอาไว้บวกลบคูณหาร สำหรับเลขทศนิยมโดยเฉพาะ
- ใน Python ก็จะมีคลาสคล้ายๆ กัน เช่น Decimal
- ส่วนใน JavaScript อาจใช้ไลบรารี่ ซึ่งมีให้เลือกเยอะเช่น
https://github.com/MikeMcl/decimal.js/
https://github.com/MikeMcl/bignumber.js/
https://github.com/MikeMcl/big.js/
- ภาษาอื่นที่เหลือลองไปศึกษาเองดูนะครับ
.
.
เรื่องบวกลบคูณหาร เลขทศนิยม ถือเป็นเรื่องสำคัญที่ไม่ควรมองข้าม
โดยส่วนตัวก็เคยเจอความเผลอเรอตรงนี้
ในระดับโปรเจคระดับธนาคาร ก็เคยพลาดมาแล้ว
สุดท้ายต้องมาไล่นั่งแก้โค้ดหลายบรรทัด
เสียเวลานั่งไล่ test ใหม่อีกรอบอีก
.
หมายเหตุเห็นคอมเมนต์สงสัยว่า
PHP กับ C# รอดชะตากรรมเดียวกันไหม ?
ก็บอกว่าไม่รอดครับ
.
// ลองดูตัวอย่างโค้ด C#
Console.WriteLine( ((0.1+0.2) == 0.3)); // False
Console.WriteLine( ((0.1+0.2) == 0.30000000000000004)); // True
// ลองดูตัวอย่างโค้ด PHP
echo number_format(0.1+0.2 , 17);
.
++++++
เขียนโดย โปรแกรมเมอร์ไทย thai programmer
อ่านเรื่อง IEEE-754 floating point ได้ที่
https://th.wikipedia.org/wiki/จำนวนจุดลอยตัว
One of those classic problems, programming that everyone needs to encounter.
It's positive to delete decimal numbers in some language.
เช่น JavaScript, Python, Perl, C#, C, C++, Java, PHP, Fortran
(and many other languages not mentioned)
.
Many times it can be crazy like
👉 0.1 + 0.2 is not equal to 0.3
But I got to be 0.30000000000000004
.
👉 or 0.1 plus 10 times. It's not 1
But I got to be 0.9999999999999999
.
The Programmer found this.
It's like boxing. I got hit by a punch. I'm confused in dong code.
:
:
But it's not that it's crazy every time like
0.5 + 0.5 = 1 (exactly correct)
0.2 + 0.3 = 0.5 (accidentally not crazy)
.
For Case 0.2 and 0.3 it was cut down.
0.2000000000000000111022302462515654042363166809082031250
With the.
0.2999999999999999888977697537484345957636833190917968750
When we are positive, we get 0.5 fit like fluke which you shouldn't be able to do.
(I can watch the exam. 0.2 + 0.3 == 0.5 get the value to be true)
:
:
The cause is like this
Because computers only know the base number 2
Even if we write code, use base number 10
In the end, when the code is run, it will become base number 2 anyway.
.
😨 and it's bad luck to visit the programmer.
Because time to convert base number 10 to base number 2
In some cases, it's converted and I get the number that I don't end.
So it makes the decimal picking wrong.
.
For the decimal number storage in multiple languages
He will be popular with IEEE-754 floating point standards
For example, 0.1 will be seen as 1/10
.
When keeping it as a decimal number, base two.
According to IEEE-754 floating point standards.
0.0001100110011001100110011001100110011001100110011...
It's a decimal. I don't finish in the second base picture.... this is what the computer can see.
.
When the computer converts back to decimal so that the world can read and understand.
In the picture of base 10 will be.
0.1000000000000000055511151231257827021181583404541015625
But the computer will cut to only 0.1 (so people see this)
:
🤔 this kind of being
Sure. It makes cuddle times to calculate numbers.
- the more jobs need detailed answers such as banking work, there will be problems, etc.
- or time to use in comparison terms. If, while etc. There may be cuddle baht.
.
😀 but don't worry. in many languages, there will be a solution to this problem.
Prevent calculation of numbers from inaccurate such as
- in Java, there will be bigdecimal class to delete multiplication for decimal numbers especially.
- in python, there will be similar classes such as decimal.
- Javascript may use a lot of libraries to choose from.
https://github.com/MikeMcl/decimal.js/
https://github.com/MikeMcl/bignumber.js/
https://github.com/MikeMcl/big.js/
- the rest of the other languages, try to study it yourself.
.
.
It's important to delete multiplication, divide the decimal numbers. It's important that you should not overlook.
Personally, I have met a burp here.
At Project Level, bank level has been missed.
Finally, I have to sit and fix many lines of code.
Wasting time to sit and chase the test again.
.
Note that I see the comments. I wonder if
Php and c #survive the same fate?
I said I wouldn't survive.
.
// check out the code C Sample #
Console.WriteLine( ((0.1+0.2) == 0.3)); // False
Console.WriteLine( ((0.1+0.2) == 0.30000000000000004)); // True
// check out the sample code php
echo number_format(0.1+0.2 , 17);
.
++++++
Written by Thai Programmer Thai programmer
Read about IEEE-754 floating point at
https://th.wikipedia.org/wiki/จำนวนจุดลอยตัวTranslated
同時也有2部Youtube影片,追蹤數超過12萬的網紅prasertcbs,也在其Youtube影片中提到,การใช้คำสั่ง Case ... End ในการตรวจสอบหลาย ๆ เงื่อนไขพร้อม ๆ กัน Download a sample Yummi2012 database file from http://goo.gl/p5JlUQ Download SQL scri...
「python end」的推薦目錄:
python end 在 BorntoDev Facebook 八卦
🔥 Dev ท่านไหนอยากไปทำงานเมืองนอก โอกาสนั้นมาถึงแล้ว !! เพราะเว็บนี้เขารวมทุกงาน และ สวัสดิการดี ๆ ไว้เพียบบบบบบบ
.
"ต้องบอกเลยว่า การไปทำงานเมืองนอก อาจจะดูไกลตัว แต่เอาเข้าจริง มีโอกาส และ ตำแหน่งงานดี ๆ รอเราอยู่เพียบเลยนะ !"
.
เพราะว่ามีบริษัทจำนวนมาก รอรับ Dev ฝีมือดีจากทั่วโลกอยู่ โดยเราไม่จำเป็นถึงขั้นบินไปก่อนแล้วไปหางานเอาดาบหน้า แต่สามารถสมัครผ่านหน้าเว็บได้เลยย <3
.
👉 โดยเจ้าเว็บนี้ชื่อง่า Relocate.me เว็บที่รวมตำแหน่งงานสาย Dev ไว้หมด ไม่ว่าจะเป็น Software Developer, Front End Developer, Java Developer, UX Designer, Android Developer, Web Developer, ReactJS Developer, DevOps Engineer, Ruby on Rails Developer, PHP Developer, Python Developer ก็มาหาได้ !!
.
นอกจากนั้นเขายังมีบอกสวัสดิการครบถ้วนไม่ว่าจะเป็น ค่าเดินทาง (ตั๋วเครื่องบิน) ฟรี !, ที่พักอาศัย ฟรี !!, บริการด้านวีซ่า ฟรี !!! และ อื่น ๆ อีกเพียบ เช่น โบนัสเมื่อเริ่มทำงาน ก็มีอะคิดดู ~
.
✅ เอาเป็นว่าใครสนใจ ก็สามารถเข้ามาดูได้เลยที่นี่นะคร้าบบ >> https://relocate.me/
.
ปล.ใกล้ ๆ อย่าง Singapore ก็มี แต่งานเยอะ ๆ จะอยู่แถว ๆ ยุโรปเป็นส่วนใหญ่ฮะ :D
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
python end 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 八卦
ในวิชา "วิทยาการคำนวณ" ระดับชั้น ม. 5
ได้ดึงวิชา data science (วิทยาศาสตร์ข้อมูล)
มาปูพื้นฐานให้เด็กๆ ได้เรียนกันแล้ว นับว่าเป็นโชคดี
เพราะวิชาพวกนี้เป็นของสูง กว่าจะสัมผัสก็คงตอนป.ตรี โท เอก
...Continue ReadingIn the subject of ′′ Calculation Theology ′′ class. 5
Pulled data science (data science)
Let's master the foundation for kids to learn. It's considered lucky.
Because these subjects are high to touch. It's probably in the middle of the year. Tri To Aek
Which I will review the content to read roughly. The content is divided into 4 chapters.
.
👉 ++++ Chapter 1-Information is valuable +++++
.
Data science in the textbook. Used by Thai name as ′′ Information Science ′′
This chapter will mention Big Data or big data with lots of valuable information.
And so much role in this 4.0 s both public and private sector.
.
If you can't imagine when you played Google search network, you'll find a lot of information that you can use in our business. This is why data science plays a very important role.
.
It's not surprising that it makes the Data Scientist s' career (British name data scientist) play the most important role and charming and interesting profession of the 21th century.
.
Data science, if in the book, he defines it
′′ Study of the process, method or technique to process enormous amounts of data to process to obtain knowledge, understand phenomena, or interpret prediction or prediction, find out patterns or trends from information.
and can be analysed to advise the right choice or take decision for maximum benefit
.
For Data science work, he will have the following steps.
- Questioning my own interest.
- Collect information.
- Data Survey
- Data Analysis (analyze the data)
- Communication and Results Visualization (Communicate and visualize the results)
.
🤔 Also he talks about design thinking... but what is it?
Must say the job of a data scientist
It doesn't end just taking the data we analyzed.
Let's show people how to understand.
.
The application design process is still required.
To use data from our analytics
The word design thinking is the idea. The more good designer it is.
Which Data Scientists Should Have To Design Final Applications
Will meet user demand
.
👉 ++++ Chapter 2 Collection and Exploration +++++
.
This chapter is just going to base.
2.1 Collection of data
In this chapter, I will talk about information that is a virtual thing.
We need to use this internet.
2.2 Data preparation (data preparation)
Content will be available.
- Data Cleaning (data cleansing)
- Data Transformation (data transformation)
In the university. 5 is not much but if in college level, you will find advanced technique like PCA.
- Info Link (combining data)
2.3 Data Exploration (data exploration)
Speaking of using graphs, let's explore the information e
Histogram graph. Box plot diagram (box plot). Distributed diagram (scatter plot)
With an example of programming, pulls out the plot to graph from csv (or xls) file.
2.4 Personal Information
For this topic, if a data scientist is implementing personal data, it must be kept secret.
.
Where the issues of personal information are now available. Personal Data Protection is Done
.
.
👉 ++++ Chapter 3 Data Analysis ++++
.
Divided into 2 parts:
.
3.1 descriptive analysis (descriptive analytics)
Analyzing using the numbers we've studied since
- Proportion or percentage
- Medium measurement of data, average, popular base.
Correlation (Correlation) relationship with programming is easy.
.
.
3.2 predictive analysis (predictive analytics)
.
- numeric prediction is discussed. (numeric prediction)
- Speaking of technique linear regression, a straight line equation that will predict future information.
Including sum of squared errors
Let's see if the straight line graph is fit with the information. (with programming samples)
- Finally mentioned K-NN (K-Nearest Neighbors: K-NN) is the closest way to finding K-N-Neighborhood for classification (Category)
*** Note *****
linear regression กับ K-NN
This is also an algorithm. One of the machine learning (machine learning, one branch of AI)
Kids in the middle of the day, I get to study.
.
.
👉 +++ Chapter 4 Making information pictured and communicating with information +++
.
This chapter doesn't matter much. Think about the scientist after analyzing what data is done. The end is showing it to other people by doing data visualization. (Better summoning)
.
In contents, it's for example using a stick chart, line chart, circular chart, distribution plan.
.
The last thing I can't do is tell a story from information (data story telling) with a message. Be careful when you present information.
.
.
.
*** this note ***
😗 Program language which textbooks mentioned and for example.
It's also python and R language
.
For R language, many people may not be familiar.
The IT graduate may be more familiar with Python.
But anyone from the record line will surely be familiar.
Because R language is very popular in statistical line
And it can be used in data science. Easy and popular. Python
.
But if people from data science move to another line of AI
It's deep learning (deep learning)
Python will be popular with eating.
.
.
#########
😓 Ending. Even I wrote a review myself, I still feel that.
- The university. 5 is it going to be hard? Can a child imagine? What did she do?
- Or was it right that I packed this course into Big Data era?
You can comment.
.
But for sure, both parents and teachers are tired.
Because it's a new content. It's real.
Keep fighting. Thai kids 4.0
.
Note in the review section of the university's textbook. 4 There will be 3 chapters. Read at.
https://www.facebook.com/programmerthai/photos/a.1406027003020480/2403432436613260/?type=3&theater
.
++++++++++++++++++++
Before leaving, let's ask for publicity.
++++++++++++++++++++
Recommend the book ′′ Artificial Intelligence (AI) is not difficult ′′
It can be understood by the number. End of book 1 (Thai language content)
Best seller ranked
In the MEB computer book category.
.
The contents will describe Artificial Intelligence (A) in view of the number. The end.
Without a code of dizzy
With colorful illustrations to see, easy to read.
.
If you are interested, you can order.
👉 https://www.mebmarket.com/web/index.php?action=BookDetails&data=YToyOntzOjc6InVzZXJfaWQiO3M6NzoiMTcyNTQ4MyI7czo3OiJib29rX2lkIjtzOjY6IjEwODI0NiI7fQ&fbclid=IwAR11zxJea0OnJy5tbfIlSxo4UQmsemh_8TuBF0ddjJQzzliMFFoFz1AtTo4
.
Personal like the book. You can see this link.
👉 https://www.dropbox.com/s/fg8l38hc0k9b0md/chapter_example.pdf?dl=0
.
Sorry, paper book. I don't have it yet. Sorry.
.
✍ Written by Thai programmer thai progammerTranslated
python end 在 prasertcbs Youtube 的評價
การใช้คำสั่ง Case ... End ในการตรวจสอบหลาย ๆ เงื่อนไขพร้อม ๆ กัน
Download a sample Yummi2012 database file from http://goo.gl/p5JlUQ
Download SQL script from http://goo.gl/aoDTPV
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่ ► https://www.youtube.com/subscription_center?add_user=prasertcbs
สอน Microsoft SQL Server 2012, 2014, 2016, 2017 ► https://www.youtube.com/playlist?list=PLoTScYm9O0GH8gYuxpp-jqu5Blc7KbQVn
สอน PostgreSQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGi_NqmIu43B-PsxA0wtnyH
สอน MySQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GFmJDsZipFCrY6L-0RrBYLT
สอน SQLite ► https://www.youtube.com/playlist?list=PLoTScYm9O0GHjYJA4pfG38M5BcrWKf5s2
การใช้ Excel ในการทำงานร่วมกับกับฐานข้อมูล (SQL Server, MySQL, Access) ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGA2sSqNRSXlw0OYuCfDwYk
การเชื่อมต่อกับฐานข้อมูล (SQL Server, MySQL, SQLite) ด้วย Python ► https://www.youtube.com/playlist?list=PLoTScYm9O0GEdZtHwU3t9k3dBAlxYoq59
#prasertcbs_SQL #prasertcbs #prasertcbs_mssql
python end 在 prasertcbs Youtube 的評價
ดาวน์โหลด SQL Notebook ไฟล์ที่ใช้ในคลิปได้ที่ ► http://bit.ly/2MW9exp
ดาวน์โหลด MS SQL Server: disney movie database (disney.bak) ได้ที่ ► http://bit.ly/2K1hwTj
ดาวน์โหลด MS SQL Server: disney movie database (disney.mdf) ได้ที่ ► http://bit.ly/2JEJnJu
ดาวน์โหลด MS SQL Server: disney movie database (disney.bacpac) ได้ที่ ► http://bit.ly/33xbjFJ
ดูวิธีการติดตั้ง disney database ได้ที่ https://youtu.be/aIlW0i-t2hM
ดูวิธีการติดตั้ง Azure Data Studio ได้ที่ https://youtu.be/gQ-ElT0CNAs
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่ ► https://www.youtube.com/subscription_center?add_user=prasertcbs
สอน SQL for Data Analytics ► https://www.youtube.com/playlist?list=PLoTScYm9O0GEi5TcWdFY-X2XqXcEdvQiO
สอน MySQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GFmJDsZipFCrY6L-0RrBYLT
สอน PostgreSQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGi_NqmIu43B-PsxA0wtnyH
สอน Microsoft SQL Server 2012, 2014, 2016, 2017 ► https://www.youtube.com/playlist?list=PLoTScYm9O0GH8gYuxpp-jqu5Blc7KbQVn
สอน SQLite ► https://www.youtube.com/playlist?list=PLoTScYm9O0GHjYJA4pfG38M5BcrWKf5s2
การเชื่อมต่อกับฐานข้อมูล (SQL Server, MySQL, SQLite) ด้วย Python ► https://www.youtube.com/playlist?list=PLoTScYm9O0GEdZtHwU3t9k3dBAlxYoq59
การใช้ Excel ในการทำงานร่วมกับกับฐานข้อมูล (SQL Server, MySQL, Access) ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGA2sSqNRSXlw0OYuCfDwYk
#prasertcbs_SQL #prasertcbs #prasertcbs_MySQL #prasertcbs_mssql #prasertcbs_PostgreSQL
python end 在 Machine Learning Tutorials Using Python In Hindi - YouTube 的八卦
... <看更多>