Вы ищете опцию 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 на двойные, поэтому в запросе требуется меньше экранирования.
Вы используете эти modf
функция:
double integral;
double fractional = modf(some_double, &integral);
можно также бросить его к целому числу, но быть предупреждены, что можно переполнить целого числа. Результат не предсказуем затем.
Попробуйте это:
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
, Который, кажется, то, что Вы просите.
Я создал подпрограмму одно использование двойного плавания, оно возвращает 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);
}
}
Быстрое "в оболочке гайки" самый очевидный ответ походит:
#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
удовлетворять Вашим потребностям.