Преобразование десятичной дроби в int? - PullRequest
1 голос
/ 28 сентября 2019

Как я могу сделать десятичное число для int.Например, как я могу сделать от 0,565 до 565 (без умножения на степень 10), потому что я не знаю, сколько будет чисел после десятичной запятой.Потому что это пользовательский ввод.

Ответы [ 2 ]

3 голосов
/ 28 сентября 2019

Как я могу сделать десятичное число для int.Например, как я могу сделать от 0,565 до 565 (без умножения на степень 10), потому что я не знаю, сколько будет чисел после десятичной запятой.Потому что это пользовательские вводы.

Принимайте входные данные как строки .Разобрать строки, чтобы определить дробную часть каждого, и идти оттуда.Это гораздо проще, чем начинать со значения float или double, потому что мешают детали представления с плавающей точкой, например, 0,565 не является точно представимым в двоичной переменной с плавающей точкой.

0 голосов
/ 28 сентября 2019

Это должно сделать:

#include <stdio.h>
#include <math.h>


int main(void)
{
  long double ld, ldi;
  long long int lli;

  {
    int n;

    do
    {
      n = scanf("%Lf", &ld);
    } while (1 != n);
  }

  while (LDBL_EPSILON < fabsl(modfl(ld, &ldi))) {
    ld *= 10.;
    fprintf(stderr, "%.30Lf\n", ld);
  }

  lli = (long long int) ldi;
  printf("%lld\n", lli);
}

, если LDBL_EPSILON отсутствует, попробуйте __LDBL_EPSILON __ или подобное ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...