Как преобразовать число в 0.mynumber

Как я могу преобразовать число в 0. и число?

так

int i = 50;
float a = 0.i //wrong code :D

или что?
как мне это сделать?

0

Решение

float a = i;
while( a >= 1.0f ) a /= 10.0f;
3

Другие решения

Это некрасиво, но я думаю, что это работает:

    int i = 50;
std::stringstream ss;
ss << "0." << i;
float a;
ss >> a;
1

Как насчет:

#include <cmath>
#include <initializer_list>
#include <iostream>

float zero_dot( float m ) {
return m / pow( 10.0, floor( log( m ) / log( 10.0 ) ) + 1 );
}

int main() {

for( auto const & it: { 5.0, 50.0, 500.0, 5509.0, 1.0 } ) {
std::cout << it << ": " << zero_dot( it ) << std::endl;
}

return 0;
}

Выход:

5: 0.5
50: 0.5
500: 0.5
5509: 0.5509
1: 0.1

Вычисление не использует какой-либо цикл.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector