Преобразование целочисленного числа с «E» в обычный вид в PHP [duplicate]

Использование функции reshape:

reshape(dat1, idvar = "name", timevar = "numbers", direction = "wide")
3
задан Nicolás 5 November 2011 в 06:17
поделиться

2 ответа

Ссылаться на float, если уже не float, а printf() результат:

printf('%.0f', (float) '8.64E+14');

Обратите внимание, что приведение в int не будет работать, потому что это не понимает числа, выраженные в виде строк в научная нотация. И в некоторых системах ваше заданное число слишком велико, чтобы вписаться в int, поэтому PHP может сделать его плавающим.

1
ответ дан BoltClock 22 August 2018 в 14:29
поделиться
  • 1
    Это печатает: -1391067136 на некоторых архитектурах. – Tim 8 March 2011 в 11:17
  • 2
    @Tim: для меня печатает 864000000000000, это связано с переполнением целых чисел на некоторых сборках. Печать в виде поплавка с десятичными знаками должна работать. – BoltClock♦ 8 March 2011 в 11:18
  • 3
    Может ли ваша конструкция обрабатывать 8.64E + 24? – Tim 8 March 2011 в 11:24
  • 4
    @Tim: Нет ... округление спада. – BoltClock♦ 8 March 2011 в 11:25
  • 5
    К сожалению, я использовал% d. Вы совершенно правы. – Tim 8 March 2011 в 11:34

Это уже фактическое значение. Тип значения - float.

$float = 8.64E+14;
var_dump($float); //will give you float 8.64E+14
1
ответ дан JohnP 22 August 2018 в 14:29
поделиться
  • 1
    на самом деле это значение csv-файла, но я хочу целое значение – pooja 8 March 2011 в 11:18
  • 2
    Ну, вы можете использовать его с помощью (int), однако вы можете потерять точность. См. Руководство: php.net/manual/en/… – JohnP 8 March 2011 в 11:23
  • 3
    (int) не распознает научную нотацию. – BoltClock♦ 8 March 2011 в 11:26
  • 4
    @BoltClock, да, я думаю. Вы могли бы использовать что-то вроде $int = (int) sprintf('%.0f', $float);, но тогда вы попадете на границу int – JohnP 8 March 2011 в 11:37
Другие вопросы по тегам:

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