Пожалуйста, попробуйте следующее:
@Client(value ="/v1/upload")
static interface UploadClient {
@Post(uri = "/mailings", produces = MediaType.MULTIPART_FORM_DATA)
HttpResponse postFile(@Body MultipartBody file)
}
Добавить продукцию и аннотацию тела
64-разрядный двойной код IEEE754 может представлять любое 32-разрядное целое число просто потому, что он имеет 53 с лишним (a) биты, доступные для точности, и 32-битное целое число требует только 32: -)
Было бы правдоподобно, чтобы (не IEEE754 с двойной точностью) 64-битное число с плавающей запятой имело меньше, чем 32 бита точности. Это позволило бы действительно огромные числа (из-за показателя степени), но ценой точности.
Суть в том, что при условии, что в мантиссе числа с плавающей запятой больше битов точности, чем в целом ( и достаточно битов в показателе степени для его масштабирования), тогда он может быть представлен без потери точности.
(a) Технически, 53-й бит точности является подразумеваемым 1
в начале последовательности, так что количество «изменчивости» может быть только 52 бита. Будь то 52 или 53, битов по-прежнему достаточно для представления каждого 32-разрядного целого числа.
Да. Плавающая (или двойная) гарантированно точно представляет любое целое число, которое не нужно усекать. Для двойной точности 53 бита, поэтому этого более чем достаточно для точного представления любого 32-битного целого числа, а также крошечной (статистически говоря) пропорции 64-битных.
Точный диапазон, который вы можете представить, зависит от множества факторов в вашей реализации, но вы можете уменьшить ограничить его, сказав, что, если поле экспоненты установлено в 0, вы можете точно представлять целые числа вплоть до ширины поля мантиссы (в предположении знакового бита). Для двойной точности IEEE 754 это означает, что вы можете точно представлять 52-битные числа. В общем, ваша мантисса будет более половины ширины всей структуры.
Для получения более подробной информации о том, как работает двойник, вы можете посмотреть на это сообщение в блоге: Анатомия число с плавающей запятой .
Я бы не использовал слова «полностью точно», когда говорил о числах с плавающей точкой. Но да, double
может представлять 32-разрядное целое число.
Я не знаю, для каких других комбинаций чисел с плавающей запятой и целых чисел это также верно.
На практике, вы не Вы хотите использовать плавающую точку над тем, что поддерживает ваша машина, поэтому просто переключитесь на рациональную арифметику с бигнумами. Таким образом, вам гарантирована точность.