>> DAVID MALAN: ಈಗ ನಿಮ್ಮ ಮನಸ್ಸು ದೊಡ್ಡದು ಲೆಟ್.
ಇದು ಭಾಗಿಸಿ ನೈಜ 1 ತಿರುಗಿದರೆ 10 1/10 ಅಥವಾ 0.1 ವಾಸ್ತವವಾಗಿ.
ಆದರೆ ಕಂಪ್ಯೂಟರ್ಗಳಲ್ಲಿ ಮಾತ್ರ ಸೀಮಿತ ಎಂದು ಬಿಟ್ಗಳ ಸಂಖ್ಯೆಗೆ ಯಾವ ಗೆ
ಸಂಖ್ಯೆಗಳನ್ನು ಪ್ರತಿನಿಧಿಸಲು, ನೀವು ಯಾವಾಗಲೂ ಸಾಧ್ಯವಿಲ್ಲ 1/10 ರೀತಿಯ ಸಂಖ್ಯೆಗಳನ್ನು ಪ್ರತಿನಿಧಿಸಲು
ಪರಿಪೂರ್ಣ ನಿಖರ.
ಅರ್ಥಾತ್, ಕಂಪ್ಯೂಟರ್ ಕೆಲವೊಮ್ಮೆ ಹೊಂದಿವೆ ತೀರ್ಮಾನ ಕರೆಗಳನ್ನು ಮತ್ತು ಮಾಡಲು
ಅಗತ್ಯವಾಗಿ ಸಂಖ್ಯೆ ನೀವು ಪ್ರತಿನಿಧಿಸಲು ಎಂದು ನಿಖರವಾಗಿ ನೀವು ಉದ್ದೇಶ ಬಯಸುವ.
>> ಉದಾಹರಣೆಗೆ, ನಾನು ಮತ್ತೆ ಹೋಗಿ ಊಹಿಸಿಕೊಳ್ಳಿ ಈ ಪ್ರೋಗ್ರಾಂ ಮತ್ತು 0.1 ಬದಲಾಯಿಸಲು,
ಓಹ್, 0.28, ತನ್ಮೂಲಕ ಸೂಚಿಸುವ ಎಂದು ನಾನು printf ಗೆ printf ಬಯಸುವ
ನಿಖರತೆಯನ್ನು 28 ಸ್ಥಳಗಳಲ್ಲಿ.
ಈಗ ಉಳಿಸಲು ಮತ್ತು ಪ್ರೋಗ್ರಾಂ ಕಂಪೈಲ್ ಲೆಟ್, ಮೇಕಪ್ floats2 ಈ ಸಮಯ.
ಡಾಟ್ ಕತ್ತರಿಸಿ floats2 ಚಾಲನೆ.
ಮತ್ತು, ಪ್ರಿಯ ದೇವರು, ನಾನು 0.1 ನೋಡಿ ಈ ಸಮಯ, ಆದರೆ ಸಾಕಷ್ಟು ಇದು 0.10000000,
ಉತ್ತಮ ಇಲ್ಲಿಯವರೆಗೆ.
ಆದರೆ, 14901161193847656250.
>> ಅಲ್ಲದೆ, ಇಂದಿನ ವಿಶೇಷವೇನು?
ಅಲ್ಲದೆ, ಒಂದು ಫ್ಲೋಟ್ ಎಂದು ತಿರುಗಿದರೆ ಸಾಮಾನ್ಯವಾಗಿ ಕಂಪ್ಯೂಟರ್ ಒಳಗೆ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ
32 ಬಿಟ್ಗಳು.
32 ನಿಸ್ಸಂಶಯವಾಗಿ ಒಂದು ಸೀಮಿತ ಸಂಖ್ಯೆಯ, ಇದು ನೀವು ಮಾತ್ರ ಪ್ರತಿನಿಧಿಸಬಹುದು ಎಂದು ಸೂಚಿಸುತ್ತದೆ
32 ಬಿಟ್ಗಳು ಒಂದು ಸೀಮಿತ ಸಂಖ್ಯೆಯ ಆಫ್ ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಮೌಲ್ಯಗಳ.
ದುರದೃಷ್ಟವಶಾತ್, ಅಂದರೆ ಕಂಪ್ಯೂಟರ್ ಎಲ್ಲಾ ಸಂಭಾವ್ಯ ಪ್ರತಿನಿಧಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ
ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ನಂಬರ್, ಅಥವಾ ನಿಜವಾದ ಸಂಖ್ಯೆಗಳು, ಪ್ರಪಂಚದಲ್ಲಿ ಅಸ್ತಿತ್ವ,
ಕೇವಲ ಅನೇಕ ಬಿಟ್ಗಳು ಏಕೆಂದರೆ.
>> ಆದ್ದರಿಂದ ಕಂಪ್ಯೂಟರ್ ಸ್ಪಷ್ಟವಾಗಿ ಇಲ್ಲಿದೆ ಈ ಸಂದರ್ಭದಲ್ಲಿ ಮಾಡಲಾಗುತ್ತದೆ 1/10 ಪ್ರತಿನಿಧಿಸಲು ಇದೆ
ಹತ್ತಿರದ ಸಾಧ್ಯ ಫ್ಲೋಟಿಂಗ್ ಅಂಕವು ಮಾಡಬಹುದು ಎಂದು.
ಆದರೆ ನಾವು ನೋಡಿದರೆ, ನಾವು ಇಲ್ಲಿ ಹೊಂದಿವೆ, 28 ದಶಮಾಂಶ ಸ್ಥಳಗಳಲ್ಲಿ, ನಾವು ನೋಡಲು ಪ್ರಾರಂಭಿಸಿ
ನಿಖರವಲ್ಲದಿರುವಿಕೆ.
ಆದ್ದರಿಂದ ಈ ಸಮಸ್ಯೆ ಯಾವುದೇ ಪರಿಪೂರ್ಣ ಪರಿಹಾರ.
ನಾವು, ಬದಲಿಗೆ ಒಂದು ಫ್ಲೋಟ್ ಎರಡು ಬಳಸಬಹುದು 64 ಬಿಟ್ಗಳನ್ನು ಬಳಸುತ್ತವೆ ಪ್ರವೃತ್ತಿಯನ್ನು
32 ವಿರುದ್ಧವಾಗಿ.
ಆದರೆ ಸಹಜವಾಗಿ, 64, ಸಹ ಸೀಮಿತ ಆಗಿದೆ ಆದ್ದರಿಂದ ಸಮಸ್ಯೆ ತಿನ್ನುವೆ
ಸಹ ಡಬಲ್ಸ್ನಲ್ಲಿ ಉಳಿಯುತ್ತದೆ.