Округляется число типа double

151
23 ноября 2021, 23:40

Есть число

double test = 0;

При некоторых условиях оно меняется

test = json.test;

json.test -- элемент из json массива типа double. В нём хранится число 9.5

Затем я через GET отправляю test в php файл, где оно записывается в БД. У меня записывается в базу число 9. В чём может быть причина? В php никакого округления нет

Проблема иногда появляется, иногда исчезает.

Так сделал, чтобы не нужно было конвертировать числа перед отправкой в PHP файл

public Form1()
{
    InitializeComponent();
    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
}
Answer 1

Думаю здесь ты можешь найти ответ. Как вариант:

Значения должны быть одинаковыми, чтобы считаться равными. Особенно если значения с плавающей запятой зависят от нескольких математических операций, обычно они теряют точность и их значения практически идентичны, за исключением их наименьших значащих цифр. По этой причине возвращаемое значение метода CompareTo в некоторых случаях может показаться неудивительной. Например, умножение на определенное значение, за которым следует деление на одно и то же значение, должно создать исходное значение. Однако в следующем примере вычисленное значение оказывается больше, чем исходное значение.

Или, другими словами, не нужно использовать вещественные числа для сравнения от слова совсем. В программировании это значение, которое говорит о примерной величине. Если нужно оперировать точностью - используй соответствующие объекты. В финансах например BigDecimal (Java). Про аналог в шарпе можно здесь почитать.

READ ALSO
Обновление базы данных на сервере данными полученными по почте

Обновление базы данных на сервере данными полученными по почте

Необходимо создать личный кабинет клиента бухгалтерской фирмыВ личном кабинете для пользователя будет доступна информация о сдаче налоговой...

116
Не передается let-переменная js в переменную php методом POST в форме

Не передается let-переменная js в переменную php методом POST в форме

Есть форма, которой нужно передать в php значения переменных var и letПеременные var передаются без проблем, а let не хотят

104
Ошибка "[22-Nov-2019 13:28:47 America/New_York] PHP Notice: Undefined offset: 0 in /home/thedbfky/beta_html/actions/test.php on line 4"

Ошибка "[22-Nov-2019 13:28:47 America/New_York] PHP Notice: Undefined offset: 0 in /home/thedbfky/beta_html/actions/test.php on line 4"

После каждого запуска скрипта вылетает ошибка: [Время + Дата] PHP Notice: Undefined offset: 0 in Путь on line 4

188
Use of undefined constant CURLOPT_TCP_KEEPALIVE в php Curl

Use of undefined constant CURLOPT_TCP_KEEPALIVE в php Curl

Использую cUrl в PHP для получения довольно большого файла (> 1Гб)До вчерашнего дня все работало стабильно

115