std::nearbyint
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
<metanoindex/>
<tbody> </tbody>| Определено в заголовочном файле <cmath>
|
||
float nearbyint( float arg ); |
(начиная с C++11) | |
double nearbyint( double arg ); |
(начиная с C++11) | |
long double nearbyint( long double arg ); |
(начиная с C++11) | |
double nearbyint( Integral arg ); |
(начиная с C++11) | |
Раундов с плавающей точкой
arg аргумент в целое число в формате с плавающей точкой, используя текущий режим округления.Оригинал:
Rounds the floating-point argument
arg to an integer value in floating-point format, using the current rounding mode.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Параметры
| arg | — | плавающей точкой
Оригинал: floating point value Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
Возвращаемое значение
Целое результате округления
argОригинал:
The integer result of rounding
argТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Заметки
Единственное различие между std::nearbyint и std::rint в том, что std::rint может поднять FE_INEXACT с плавающей точкой исключения, а std::nearbyint никогда не поднимает его.
Оригинал:
The only difference between std::nearbyint and std::rint is that std::rint may raise the FE_INEXACT floating-point exception, while std::nearbyint never raises it.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Пример
Запустить этот код
#include <cmath>
#include <cfenv>
#include <iostream>
int main()
{
#pragma STDC FENV_ACCESS ON
std::fesetround(FE_DOWNWARD);
std::cout << "rounding using FE_DOWNWARD: \n" << std::fixed
<< " 12.0 -> " << std::nearbyint(12.0) << '\n'
<< " 12.1 -> " << std::nearbyint(12.1) << '\n'
<< "-12.1 -> " << std::nearbyint(-12.1) << '\n'
<< " 12.5 -> " << std::nearbyint(12.5) << '\n'
<< " 12.9 -> " << std::nearbyint(12.9) << '\n'
<< "-12.9 -> " << std::nearbyint(-12.9) << '\n'
<< " 13.0 -> " << std::nearbyint(13.0) << '\n';
std::fesetround(FE_TONEAREST);
std::cout << "rounding using FE_TONEAREST: \n"
<< " 12.0 -> " << std::nearbyint(12.0) << '\n'
<< " 12.1 -> " << std::nearbyint(12.1) << '\n'
<< "-12.1 -> " << std::nearbyint(-12.1) << '\n'
<< " 12.5 -> " << std::nearbyint(12.5) << '\n'
<< " 12.9 -> " << std::nearbyint(12.9) << '\n'
<< "-12.9 -> " << std::nearbyint(-12.9) << '\n'
<< " 13.0 -> " << std::nearbyint(13.0) << '\n';
}
Вывод:
rounding using FE_DOWNWARD:
12.0 -> 12.000000
12.1 -> 12.000000
-12.1 -> -13.000000
12.5 -> 12.000000
12.9 -> 12.000000
-12.9 -> -13.000000
13.0 -> 13.000000
rounding using FE_TONEAREST:
12.0 -> 12.000000
12.1 -> 12.000000
-12.1 -> -12.000000
12.5 -> 12.000000
12.9 -> 13.000000
-12.9 -> -13.000000
13.0 -> 13.000000
См. также
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11) |
ближайшее целое число с использованием текущего режима округления с исключением, если результат отличается (функция) |
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11) |
ближайшее целое число, округление от нуля в промежуточных случаях (функция) |
(C++11)(C++11) |
получает или устанавливает направление округления (функция) |