2014-12-09 3 views
-1
float number=15.555555; 
printf("FIRST FIVE NUMBERS%f",number); 

Желаемая Ouput:Как принимать первые 5 числа поплавка

ПЕРВЫЙ ПЯТЫЙ NUMBERS15555

Фактический выход:

ПЕРВЫЙ ПЯТЫЙ NUMBERS15.555555

Как получить 5-значное число и отбросить десятичную точку?

Например:

123,43213 -> 12343

1,5634567 -> 15634

+2

Что именно вы спрашиваете? Вопрос непонятен. Вы действительно хотите распечатать 15555? не 15,555? – Trent

+2

@Trent Вопрос ясен, вы просто устали. – nbro

+1

Вы хотите '15555' или' 15.555' как выход? Пожалуйста, отредактируйте свой вопрос. –

ответ

1

Без элегантности, некоторые грубой силы и округление, вы можете сделать:

#include <cmath> 
#include <iostream> 

int main() 
{ 
    double number = 15.555555; 
    while(100000 <= number) number /= 10; 
    while(number < 10000) number *= 10; 
    // 10000.x <= number < 100000 
    number = round(number); 
    if(100000 <= number) number = round(number/10); 
    std::cout << number << '\n'; 
} 

Примечание: Только для чисел, больших нуля.

+0

Ну, когда он округляет мой номер, последняя цифра (5) меняется на 6 ... Итак, вместо 15555 я получаю 15556:/ – user3751721

+1

@ user3751721 вы можете использовать вместо этого 'trunc' –

+1

@ DieterLücking Вероятно, вы должны проверить, что число больше чем 1. Это решение сильно разрушилось, если это не так. –

0

Вы всегда можете сделать что-то вроде этого:

cout << "FIRST FIVE NUMBERS" << to_string(15.555555).substr(0, 5); 

Это не будет круглым или что-нибудь, но, возможно, это то, что вы хотите?

EDIT:

комментарий Per Lightness Races in Orbit «s Я думаю, что желаемый результат может быть получен от:

string foo = to_string(15.555555); 

for_each(foo.begin(), advance(foo.begin(), min(5, foo.size())), [](const char& i){if(i != '.')cout << i}); 
+0

Разделите десятичную точку, и вы там. –

+0

@LightnessRacesinOrbit Это то, что он хочет? Кажется, он просто использовал% f, чтобы напечатать все это? Ха, я узнал об этом из твоего ответа сегодня утром! –

+0

Согласно обеим примерам в вопросе, да. –