как у числа дабл взять все после точки ?

 

нюансы:

не округляя

не умножая на 10 кратные.

 

пример:

есть число 0,0007 - нужно что было 7 

есть 0,77777 - нужно 77777 

 есть ли какая функция ?

 
mario_SC--:

нюансы:

не округляя

не умножая на 10 кратные.

 

пример:

есть число 0,0007 - нужно что было 7 

есть 0,77777 - нужно 77777 

 есть ли какая функция ?

1) Перевести в стринг, вычесть символы "0", ".", "," и оставшееся перевести в интегер.

2) Перевести в стринг, посчитать символы после запятой, умножить исходный дабл на 10^Х, где Х - кол-во символов после запятой.

 
evillive:

1) Перевести в стринг, вычесть символы "0", ".", "," и оставшееся перевести в интегер.

2) Перевести в стринг, посчитать символы после запятой, умножить исходный дабл на 10^Х, где Х - кол-во символов после запятой.

и как их вычесть ? писать километровый цикл ?
 
mario_SC--:
и как их вычесть ? писать километровый цикл ?

Ага ;)

Ну а как же без цикла, строку ведь посимвольно обрабатывать надо. Есть правда один нюанс - надо отслеживать только нули, идущие подряд от запятой, а те нули, что между цифрами оставлять. А то 0,0070422 превратится в 7422, когда должно быть 70422.

Второй вариант удобнее, Б=А*10^(Х-2), где А - исходное число, Х - длина строки.

 
А как быть с даблами больше 1? Или такой вариант не будет втречаться?
 
evillive:
А как быть с даблами больше 1? Или такой вариант не будет втречаться?
не будет больш 1. попробую, когда решу еще один вопрос который вы уже заметили по поводу вычитаний. + еще вопрос, как округлить 1.12345 => 1.1234. ?????
 

А намудрили, то ...

double val = 1.23456;
if (val > (1.0 - _Point)) val -= floor(val); // убираем целую часть, если число больше 0.99999
int mantiss = val*pow(10, _Digits); // здесь искомое = 23456.

кажется так будет проще?

 
prorab:

А намудрили, то ...

кажется так будет проще?

 

спасибищщще ! рабит как надо 

мне трудно понять что вы написали, и  сам никгда бы не додумался, но работает ))

Причина обращения: