lenientops
Этот модуль предлагает реализации общих бинарных операций, таких как +, -, *, /, и операций сравнения, которые работают с смешанными операндами с плавающей запятой/целыми числами. Все операции преобразуют целочисленный операнд в тип операнда с плавающей запятой. Для числовых выражений возвращаемый тип всегда является типом плавающей запятой, участвующей в выражении, т. е. нет автоматического преобразования из float32 в float64.
Примечание: В общем случае автоматическое преобразование из целого числа в число с плавающей запятой приводит к потере информации, поэтому эти операторы находятся в отдельном модуле. Используйте с осторожностью.
Что касается бинарного сравнения, этот модуль предоставляет только операторы неравенства. Оператор равенства == опущен, потому что в зависимости от конкретного случая использования предпочтительнее либо привести к числу с плавающей запятой, либо округлить до целого, и пользователи должны сделать явный выбор.
Процедуры
proc `+`[I: SomeInteger; F: SomeFloat](i: I; f: F): F {...}{.noSideEffect, inline.}- Исходный код Редактировать
proc `+`[I: SomeInteger; F: SomeFloat](f: F; i: I): F {...}{.noSideEffect, inline.}- Исходный код Редактировать
proc `-`[I: SomeInteger; F: SomeFloat](i: I; f: F): F {...}{.noSideEffect, inline.}- Исходный код Редактировать
proc `-`[I: SomeInteger; F: SomeFloat](f: F; i: I): F {...}{.noSideEffect, inline.}- Исходный код Редактировать
proc `*`[I: SomeInteger; F: SomeFloat](i: I; f: F): F {...}{.noSideEffect, inline.}- Исходный код Редактировать
proc `*`[I: SomeInteger; F: SomeFloat](f: F; i: I): F {...}{.noSideEffect, inline.}- Исходный код Редактировать
proc `/`[I: SomeInteger; F: SomeFloat](i: I; f: F): F {...}{.noSideEffect, inline.}- Исходный код Редактировать
proc `/`[I: SomeInteger; F: SomeFloat](f: F; i: I): F {...}{.noSideEffect, inline.}- Исходный код Редактировать
proc `<`[I: SomeInteger; F: SomeFloat](i: I; f: F): bool {...}{.noSideEffect, inline.}- Исходный код Редактировать
proc `<`[I: SomeInteger; F: SomeFloat](f: F; i: I): bool {...}{.noSideEffect, inline.}- Исходный код Редактировать
proc `<=`[I: SomeInteger; F: SomeFloat](i: I; f: F): bool {...}{.noSideEffect, inline.}- Исходный код Редактировать
proc `<=`[I: SomeInteger; F: SomeFloat](f: F; i: I): bool {...}{.noSideEffect, inline.}- Исходный код Редактировать
© 2006–2021 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/lenientops.html