Сегодня мы поговорим о вещественных числах. Точнее, о представлении их процессором при вычислении дробных величин. Каждый из нас сталкивался с выводом в строку чисел вида 3,4999990123 вместо 3,5 или, того хуже, огромной разницей после вычислений между результатом теоретическим и тем, что получилось в результате выполнения программного кода...
하지만 문제는 주어진 정확도 와 높은 계산 비용의 편의상 배정밀도 숫자를 다음 형식으로 변환할 수 있다는 점입니다. ± 기호 · (1+가수/ 2 52 ) × 2 차수 − 1023
사마귀와 순서를 구별하는 것은 어렵지 않지만 이 문제를 정면으로 해결하는 것은 흥미롭지 않습니다.
정확성이 주어진다면 이 전체 작업에 의미가 없습니다. 나는 이미 예를 들었습니다. 0.07에는 소수점 이하 두 자리가 있습니다. 그러나 프로그래밍 방식으로 문자 수를 계산하려고하면 13 조각이 나옵니다. 그리고 0.07은 계산 결과로 얻은 것이 아니라 변수를 통하지 않고 수동으로 입력됩니다.
Alexandr Sokolov : 내가 다 안다고 주장하는 것이 아니라 틀린 부분을 말하거나 자신의 버전을 보여주는 것이 좋습니다
프로그램에서 각 이중 변수에 대해 소수 자릿수가 몇 개나 정의되어 있는지 알고 싶습니다. 말도 안되는 소리입니다. 모든 이중 변수는 동일한 표현을 갖습니다. Float 형식으로 표시됩니다. 때로는 포인트가 왼쪽에 있고 때로는 오른쪽에 있습니다. 숫자 값에 따라 다릅니다. 100만분의 1과 100만분의 1은 다른 정밀도로 표시됩니다.
Habré에 대한 기사 기반: https://habr.com/company/xakep/blog/257897/
실제로 테스트하지는 않았지만 작동하는 것 같습니다
Habré에 대한 기사 기반: https://habr.com/company/xakep/blog/257897/
실제로 테스트 하지는 않았지만 작동하는 것 같습니다
숫자 0.07의 올바른 결과를 제공하면 올바르게 작동합니다.
숫자 0.07의 올바른 결과를 제공하면 올바르게 작동합니다.
작동하지 않습니다((((
작동하지 않습니다((((
그리고 어떤 알고리즘도 작동하지 않을 것입니다 ...
그리고 어떤 알고리즘도 작동하지 않을 것입니다 ...
하지만 문제는 주어진 정확도와 높은 계산 비용의 편의상 배정밀도 숫자를 다음 형식으로 변환할 수 있다는 점입니다. ± 기호 · (1+가수/ 2 52 ) × 2 차수 − 1023
사마귀와 순서를 구별하는 것은 어렵지 않지만 이 문제를 정면으로 해결하는 것은 흥미롭지 않습니다.
하지만 문제는 주어진 정확도 와 높은 계산 비용의 편의상 배정밀도 숫자를 다음 형식으로 변환할 수 있다는 점입니다. ± 기호 · (1+가수/ 2 52 ) × 2 차수 − 1023
사마귀와 순서를 구별하는 것은 어렵지 않지만 이 문제를 정면으로 해결하는 것은 흥미롭지 않습니다.
정확성이 주어진다면 이 전체 작업에 의미가 없습니다. 나는 이미 예를 들었습니다. 0.07에는 소수점 이하 두 자리가 있습니다. 그러나 프로그래밍 방식으로 문자 수를 계산하려고하면 13 조각이 나옵니다. 그리고 0.07은 계산 결과로 얻은 것이 아니라 변수를 통하지 않고 수동으로 입력됩니다.
또 다른 옵션이 있습니다.
정신 차리세요. 이것은 심각하게 논의되어서도 안되는 말도 안되는 소리입니다.
저자는 단순히 이중 변수의 내부 구조를 완전히 오해하고 있습니다.
영형!
내가 다 안다고 주장하는 것이 아니라 틀린 부분을 말하거나 자신의 버전을 보여주는 것이 좋습니다
프로그램에서 각 이중 변수에 대해 소수 자릿수가 몇 개나 정의되어 있는지 알고 싶습니다. 말도 안되는 소리입니다. 모든 이중 변수는 동일한 표현을 갖습니다. Float 형식으로 표시됩니다. 때로는 포인트가 왼쪽에 있고 때로는 오른쪽에 있습니다. 숫자 값에 따라 다릅니다. 100만분의 1과 100만분의 1은 다른 정밀도로 표시됩니다.
또 다른 옵션이 있습니다.
아니요, 작동하지 않습니다. 어제 유형 변환을 통해 수행했습니다. 여기에 스크립트, 귀하의 예 및 제 것이 있습니다.
결과:
2018.11.13 01:49:16.131 tst (EURUSD,M30) 1.DoubleToDigits() = 11
2018.11.13 01:49:16.131 tst (EURUSD,M30) 1. 숫자() = 0
2018.11.13 01:49:16.131 tst (EURUSD,M30) 2.DoubleToDigits() = 3
2018.11.13 01:49:16.131 tst (EURUSD,M30) 2. 숫자() = 3
당신은 구글 FP- 인쇄 -PLDI96.pdf 할 수 있지만 누군가가 알고리즘에 따라 모든 것을 할 것인지 의심 스럽습니다.