2015-10-19 6 views

ответ

7

Это очень просто, если вы знаете, что при преобразовании значение с плавающей запятой для целого числа, оно просто обрезает значение с плавающей запятой. Таким образом, вы могли бы просто сделать

var1 = x; // Assign 12 to var1 
var2 = x - var1; // Assigns 12.505 - 12 to var2 
7
var1 = x; // var1 is 12 
var2 = x - var1; // var2 is 0.505 

Run live.

Обратите внимание, что,

Если преобразование из типа с плавающей точкой к целочисленного типа, значение усекается (дробная часть удаляется). Если результат лежит вне диапазона представляемых значений по типу, преобразование вызывает неопределенное поведение.

Подробнее о Type conversions.

0

Существуют различные способы.

Для одного пути, искать функцию modf() в стандартном заголовочном <math.h>

1

Вы можете бросить поплавок к междунар, используя один из следующих вариантов:

var1 = (int)x; 
var1 = static_cast<int>(x); 
var1 = int(x); 

Все эти опции идентичны. Кроме того, вы можете использовать неявное преобразование, но это может привести к компиляции предупреждений или ошибок в зависимости от настроек компилятора:

var1 = x; 

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

var2 = x - var1; 

Пожалуйста, обратите внимание, что прямое преобразование в междунар отсекает дробную часть, я имею в виду,

(int)(12.505) == 12 
(int)(12.499) == 12 
(int)(-12.55) == -12 
(int)(-12.49) == -12 

Если вам нужны какие-то другие способы округления числа, используйте CEIL(), пола() или Rou й(). Эти функции находятся в файле заголовка в пространстве имен std.

0

Просто используйте функцию автоматического усечения.

float f = 12.93; 

int b = f;  // 12 
float p = f - b // 0.93 
Смежные вопросы