Извлеките десятичную часть из числа с плавающей точкой в C

Вы ищете опцию FIELDS OPTIONALLY ENCLOSED .

$upload = mysqli_query($cons, 
    "LOAD DATA 
        LOCAL INFILE 'file_name.csv'
        INTO TABLE table_name 
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
        LINES TERMINATED BY '\n'"           
);

Примечание: я переключил одинарные кавычки php на двойные, поэтому в запросе требуется меньше экранирования.

45
задан Jonathan Leffler 20 February 2015 в 00:40
поделиться

4 ответа

Вы используете эти modf функция:

double integral;
double fractional = modf(some_double, &integral);

можно также бросить его к целому числу, но быть предупреждены, что можно переполнить целого числа. Результат не предсказуем затем.

85
ответ дан Johannes Schaub - litb 26 November 2019 в 20:51
поделиться

Попробуйте это:

int main() {
  double num = 23.345;
  int intpart = (int)num;
  double decpart = num - intpart;
  printf("Num = %f, intpart = %d, decpart = %f\n", num, intpart, decpart);
}

Для меня, это производит:

Num = 23.345000, intpart = 23, decpart = 0.345000

, Который, кажется, то, что Вы просите.

44
ответ дан Chris Bunch 26 November 2019 в 20:51
поделиться

Я создал подпрограмму одно использование двойного плавания, оно возвращает 2 целочисленных значения.


void double2Ints(double f, int p, int *i, int *d)
{ 
  // f = float, p=decimal precision, i=integer, d=decimal
  int   li; 
  int   prec=1;

  for(int x=p;x>0;x--) 
  {
    prec*=10;
  };  // same as power(10,p)

  li = (int) f;              // get integer part
  *d = (int) ((f-li)*prec);  // get decimal part
  *i = li;
}

void test()
{ 
  double df = 3.14159265;
  int   i,d;
  for(int p=2;p<9;p++)
  {
    double2Ints(df, p, &i,&d); printf("d2i (%d) %f = %d.%d\r\n",p, df,i,d);
  }
}

1
ответ дан Johan 26 November 2019 в 20:51
поделиться

Быстрое "в оболочке гайки" самый очевидный ответ походит:

#define N_DECIMAL_POINTS_PRECISION (1000) // n = 3. Three decimal points.

float f = 123.456;
int integerPart = (int)f;
int decimalPart = ((int)(f*N_DECIMAL_POINTS_PRECISION)%N_DECIMAL_POINTS_PRECISION);

Вы изменились бы, сколько десятичных точек Вы хотите путем изменения N_DECIMAL_POINTS_PRECISION удовлетворять Вашим потребностям.

15
ответ дан Eli Iser 26 November 2019 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: