2015-12-14 2 views
-2

У меня есть двойной глядя, как это:Круглые последние 2 цифры двойного

0.04251789 

И это должно выглядеть следующим образом:

0.04251700 

Независимо от того, что две последние цифры они должны быть заменены по 00; Важно, чтобы последние две цифры не были потеряны, но заменены на 00.

Так что:

0.042517 

было бы неправильно.

Что является самым быстрым способом для этого?

+0

так его просто для отображения? – AntiHeadshot

+0

Он отправляется в WebAPI и хочет, чтобы у него было ровно 8 цифр. Преобразование в строку не является вариантом. – Bobface

+0

Предполагая, что API (будучи основанным на веб-интерфейсе) не хочет несвязанных двоичных данных, вы * имеете *, чтобы преобразовать его в строку раньше или позже. И после округления, просто укажите правильную ширину поля и точность при создании строки. –

ответ

2

Я двойной глядя, как это:

0,04251789

И это должно выглядеть следующим образом:

0,04251700

Вы хотите округлить до ближайшего 1.0/1000000 , Это можно сделать так:

double d = 0.04251789; 
double rounded = std::floor(f * 1000000)/1000000; 

Так это:

0,042517

бы неправильно.

Просто укажите правильную точность при преобразовании double в строку. Вы хотите 8 цифр, так:

std::printf("%.8f", rounded); 

Преобразование в строку не вариант.

Это противоречит вашему требованию о том, что число должно иметь конечные нули. Конечные (и ведущие) нули имеют смысл только в текстовом представлении числа.

1

, как это должно быть строкой, в противном случае вы не сможете отображать нули, с-решение может быть:

char temp[128]; 
memset(temp,'\0',sizeof(temp)); 
sprintf(temp,"%10.8f",0.04251789); 
temp[strlen(temp)-1]='0'; 
temp[strlen(temp)-2]='0'; 
printf(temp); 
2

так вот с-путь, это не самый хороший, но я должен делать то, что вы хотите.

int main(void) { 
    double number = 0.04251789; 
    char buffer[10]; 
    snprintf(buffer, sizeof(buffer), "%g", number); 
    buffer[8] = '0'; 
    buffer[9] = '0'; 
    std::cout << "Converted Number: " << buffer << std::endl; 
} 

выход должен быть Converted Number: 0.04251700

Я также попытался его шпагатом, но он, кажется, сократить некоторые цифры, и я не уверен, как отключить эту функцию. Но если вы хотите попробовать, стиль C++ попробуйте метод std::to_string().