Двойное значение Laravel Eloquent, хранящееся в базе данных, возвращается округленным - PullRequest
0 голосов
/ 31 мая 2018

У меня есть следующее значение, хранящееся в базе данных MySQL 23456789123,45678, и когда я получаю это значение с помощью магической переменной, я получаю 23456789123,457 в качестве значения.

Я пробовал $cast переменную вМодель:

protected $casts = [
  'previous_value' => 'double(16,5)',
]

но это не помогло.Большое спасибо за любую помощь в этом отношении.

1 Ответ

0 голосов
/ 31 мая 2018

Проблема не в Laravel, а в PHP.В документации PHP вы можете видеть, что точность по умолчанию равна 14 , которую вы в настоящее время превышаете.

Name      |   Default |   Changeable   |
precision |   "14"    |   PHP_INI_ALL  |

Количество отображаемых значащих цифрв числах с плавающей запятой.-1 означает, что будет использоваться расширенный алгоритм округления таких чисел.

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

ini_set('precision', 17);
ExampleModel::find($id)->previous_value;

Вы можете видеть, что кто-то другой имеетответил на аналогичный вопрос здесь .

...