Swagger документация с multipart / form-data и @ApiImplicitBody

Это не точность десятичных чисел, так как базовые поплавки хранятся в Java. Это демонстрирует:

<cfoutput>
<cfloop array="#[0.275,0.285,0.295]#" index="s">
#s.getClass().getName()#
<cfset f1 = s + 0>
#f1.getClass().getName()#
#f1.toString()#
<cfset f2 = f1*100>
#f2.toString()#
#round(f2)#<br>
</cfloop>
</cfoutput>

Выход:

java.lang.String java.lang.Double 0.275 27.500000000000004 28

java.lang.String java.lang.Double 0.285 28.499999999999996 28

java.lang.String java.lang.Double 0.295 29.5 30

Я могу предположить только под капотом CF использует лучшую точность при преобразовании из строки в float при выполнении <cfset f1 = s + 0>, так как там нет хитрого округления. Однако, выполнив шаг умножения, мы получаем ошибку с погрешностью. 28.5 заканчивается просто застенчивым 28,5, поэтому раунды до 28 нет 29. Это просто арифметическая проблема двоичной фракции.

Кстати, есть ничего особенного около 0.285. Аналогичным образом выполняется множество чисел (см. Диапазон от 0,005 до 5,05). Вы только что выбрали пучок, который не является (кроме 0.285).

1
задан Kim Kern 20 January 2019 в 18:09
поделиться

1 ответ

Ошибка

Вы должны использовать String вместо 'string' для типа:

@ApiImplicitBody({ name: 'name', description: 'Infographic title', type: String })
                                                                         ^^^^^^

<час>

Данные формы

[ 119] Документирование параметров данных формы еще не поддерживается @ nestjs / swagger в соответствии с этой проблемой github . Уже существует запрос на извлечение , который бы добавил эту функцию, но он еще не объединяется. Вы можете подписаться на него, чтобы получать уведомления, когда статус обновляется.

0
ответ дан Kim Kern 20 January 2019 в 18:09
поделиться
Другие вопросы по тегам:

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