程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

MATLAB、C++、OpenCV、Python、Python-Numpy近似值(取整)求取函數總結【round()、ceil()、floor()、fix()】

編輯:Python

一、MATLAB中的近似值求取函數

MATLAB中有四個函數用於近似值求取,分別為round()、ceil()、floor() 、fix()。

聲明:博主目前使用的MATLAB為R2019a版,所以下面提供的幫助文檔鏈接為R2019a的幫助文檔鏈接。

函數round()用於四捨五入為最近的小數或整數,可以控制小數部分或整數部分的位數,
詳情參見 https://ww2.mathworks.cn/help/releases/R2019a/matlab/ref/round.html

函數ceil()用於朝正無窮大方向取整,既然是取整,那就不可以控制小數部分或整數部分的位數,詳情見 https://ww2.mathworks.cn/help/releases/R2019a/matlab/ref/ceil.html

函數floor()用於朝負無窮方向取整,既然是取整,那就不可以控制小數部分或整數部分的位數,詳情見 https://ww2.mathworks.cn/help/releases/R2019a/matlab/ref/floor.html

函數fix()用於朝坐標軸的0點方向取整,既然是取整,那就不可以控制小數部分或整數部分的位數,詳情見 https://ww2.mathworks.cn/help/releases/R2019a/matlab/ref/fix.html

二、C++中的近似值求取函數

C++的標准數學庫中有三個函數用於近似值求取,分別為floor函數、ceil函數和round函數 。
它們的作用與MATLAB中的三個函數基本相同,只是C++的標准庫的round函數只能用來取整,不能控制小數位數。
示例代碼如下:

#include <iostream>
#include <math.h>
int main()
{

double y1, y2, y3, y4, y5, y6, y7;
y1 = round(0.1);
y2 = round(0.5);
y3 = round(0.7);
y4 = ceil(1.1);
y5 = ceil(-2.8);
y6 = floor(1.8);
y7 = floor(-2.1);
std::cout << "y1的值為:" << y1 << std::endl;
std::cout << "y2的值為:" << y2 << std::endl;
std::cout << "y3的值為:" << y3 << std::endl;
std::cout << "y4的值為:" << y4 << std::endl;
std::cout << "y5的值為:" << y5 << std::endl;
std::cout << "y6的值為:" << y6 << std::endl;
std::cout << "y7的值為:" << y7 << std::endl;
return 0;
}

運行結果如下:

三、OpenCV中近似值求取函數

OpenCV中提供了函數cvRound、cvCeil、cvFloor來進行近似值求取,作用與標准數學庫中的那幾個函數一樣。但要注意,函數cvRound是五捨六入,而不是四捨五入。

博主沒有發現OpenCV中直接到Mat對象的每個元素進行近似值求取的函數。

示例代碼如下:

#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{

double y1, y2, y3, y4, y5, y6, y7;
y1 = cvRound(0.1);
y2 = cvRound(0.5);
y3 = cvRound(0.7);
y4 = cvCeil(1.1);
y5 = cvCeil(-2.8);
y6 = cvFloor(1.8);
y7 = cvFloor(-2.1);
std::cout << "y1的值為:" << y1 << std::endl;
std::cout << "y2的值為:" << y2 << std::endl;
std::cout << "y3的值為:" << y3 << std::endl;
std::cout << "y4的值為:" << y4 << std::endl;
std::cout << "y5的值為:" << y5 << std::endl;
std::cout << "y6的值為:" << y6 << std::endl;
std::cout << "y7的值為:" << y7 << std::endl;
return 0;
}

運行結果如下:

四、Python中的近似值求取函數

Python的內建函數中只有函數round(),它做的五捨六入近似,函數round()的詳細介紹見博文 https://blog.csdn.net/wenhao_ir/article/details/125436091的第54點。
在math庫中有floor()函數和ceil()函數,作用與上面C++和MATLAB中的相關函數一樣。
示例代碼如下:

import math
y1 = round(0.1)
y2 = round(0.5)
y3 = round(0.7)
y4 = math.ceil(1.1)
y5 = math.ceil(-2.8)
y6 = math.floor(1.8)
y7 = math.floor(-2.1)

運行結果如下:

五、Python-Numpy中的近似值求取函數

Python-Numpy中也提供了相關函數,比如numpy.around()、numpy.floor()、numpy.ceil(),具體的介紹可參考 https://www.runoob.com/numpy/numpy-mathematical-functions.html
這裡就不多做介紹了。

從以上介紹我們可以看出,基本上任何一個數學庫都有round()、ceil()、floor()這三個函數。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved