zoukankan      html  css  js  c++  java
  • C++获取两个值的差距比

    今天写一个小程序,得到两个值的差距比。比如100和120之间差了0.2,120和100同样差了0.2。

    这是一个简单的数学问题,通过数学公示能够得到:

    min + min * diff_per = max;
    

    从而

    diff_per = (max - min) / min
    

    由于C++中数值类型有很多,所以我使用了模板函数去实现这个方法:

    template<typename T>
    inline double GetDiffPer(T v1, T v2)
    {
    	// min + min * diff_per = max -> diff_per = (max - min) / min
    	v1 > v2 ? std::swap(v1, v2) : 0;
    	return (v2 * 1.0 - v1) / v1;
    }
    

    测试代码如:

    int main()
    {
    	int v1 = 0, v2 = 0;
    
    	std::cout << "input v1 v2: ";
    	while (std::cin >> v1 >> v2)
    	{
    		double diff_per = GetDiffPer(v1, v2);
    
    		std::cout << "diff_per: " << diff_per << std::endl;
    
    		std::cout << "input v1 v2: ";
    	}
    }
    

    PS: GetDiffPer 的除法没有判断除数为0的情况,这里是因为被除数是double类型,所以不会导致崩溃,而是得到一个inf的结果,它比任何值都大。

  • 相关阅读:
    登乐游原
    遇到Tomcat端口占用怎么办
    tensorflow cnn+rnn基本结构
    linux bash 入门
    python 装饰器
    php 后端开发学习
    图像增强方法
    git 使用
    斯坦福机器学习课程笔记
    django学习笔记
  • 原文地址:https://www.cnblogs.com/demon90s/p/15676985.html
Copyright © 2011-2022 走看看