This 내가했습니다 코드입니다 : 기본적으로이 단계는 동급입니까?
#include <iostream>
#include <limits>
#include <math.h>
#include <stdio.h>
typedef std::numeric_limits<double> dbl;
double StepValue(double value) {
return floor(0.5 + value/0.1) * 0.1;
}
void PrintValue(int maxlen, const char *fmt, ...)
{
char buffer[20];
va_list arglist;
va_start(arglist, fmt);
vsnprintf(buffer, maxlen, fmt, arglist);
va_end(arglist);
std::cout << "p: " << buffer << std::endl;
}
int main()
{
std::cout.precision(dbl::max_digits10);
std::cout << std::fixed;
double inputValue = 13.55121341223423457;
std::cout << "v: " << inputValue << std::endl;
double steppedValue = StepValue(inputValue);
std::cout << "f: " << steppedValue << std::endl;
PrintValue(20, "%.1f", inputValue);
}
, 나는 inputValue
을 가지고 내가 할 수있는 가장 가까운 두 배를 사용하여, I (1 자리 쉼표 이후 인)가 필요합니다 가까운 계단 값으로 반올림 그것 (내가 steppedValue
에 지정하는 것)을 대표해라. (상기 점은 개념적으로 0.6을 반환하지만, 그 점이 아니다 의한 부동 소수점 연산에 실제로 13.60000000000000142
을 임) inputValue = 13.55121341223423457
을 취하고 0.1
하는 공정을 사용하여 예를 들어 그럼
는 값 13.6
이다.
나중에 inputValue
을 사용하고 0.1
단계를 다시 고려하여 vsnprintf
기능을 사용하여 인쇄합니다. 정확히 13.6
을 인쇄합니다.
제 질문은 : 내 계단 기능을 사용하거나 vsnprintf
을 사용하는 사이에 다른 계단 값으로 반올림되는 ANY inputValue
이 존재할 수 있습니까? 즉, 두 단계의 결과에서 내 단계 기능 및 vsnprintf
계산/서로 다른 단계에서 값을 인쇄와 같이 일치하지 않을 수 있습니까?
게시물의 * 텍스트 *를 편집하십시오. 방화벽은 코드 페이지에 대한 링크를 차단하므로 더 적은 인력이 도움을받을 수 있습니다. 화면 스냅 샷을 보내지 마십시오. –
@ThomasMatthews : 완료;) 감사합니다 – markzzz