C++:让计算机象人一样运算数(一)

我们知道,计算机,每一种编程语言,都有自己表示数的方法。受制于表示形式、长度,机器的计算是不精确的、有限制的。虽然平常应用够了,但与人类的方式还是不同。

C语言有大数库。GMP等等,应当是很强大的。但是还是不自然吧。

C++的方法,运算符重定义等等,才可以写出更自然的?

在形式上,思维上更符合人类行为的 大数库,是否已经有了?请告诉我!

不在底层求效率,思维上更接近人类的。

有想法的写一写?

以下,先把数表示出来?

#ifndef NUMBER_H
#define NUMBER_H
#include <concepts>
#include <string>
#include <iostream>
#include<regex>

bool can_convert_to_Number(std::string str); 

template<typename T>
concept can_to_number  = requires(T t){ 
	{ std::to_string(t) } -> std::same_as<std::string>;	
	can_convert_to_Number(std::to_string(t)) == true;
	};

class Number
{
	private:
		std::string _value;
	
	public:
		Number():_value("0"){};
		Number(can_to_number auto a):_value(std::to_string(a)){};
		Number(std::string a){
			if(can_convert_to_Number(a)) 
				_value=a;
			else
				throw "Must can convert to Number.";		
		};
		
		~Number();
		void print(){std::cout << _value <<std::endl;}
		std::string value(){return _value;}
		
		//bool isZero();
	protected:
};

#endif
#include "Number.h"
Number::~Number()
{
}

bool can_convert_to_Number(std::string str)
{
	std::regex r("(^[+-]?)((0$)|([1-9][0-9]*[.][0-9]+$)|(0[.][0-9]+$)|([1-9][0-9]*$))");	
	bool flag = std::regex_match(str, r);
	return flag;	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值