chawuciren/bignumber 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

chawuciren/bignumber

Composer 安装命令:

composer require chawuciren/bignumber

包简介

Using a more modern and concise, object-oriented approach, it is more convenient and intuitive to solve the super large number and floating point precision problems in PHP

README 文档

README

php-bignumber

release php downloads

About

中文文档

The integer size in PHP is platform-dependent. The maximum size is usually 2 billion, and the maximum size on 64-bit platforms is usually 9E18.

Floating-point Numbers have limited precision and depend on the system, so never trust floating-point Numbers to be accurate to the last bit, and never compare two floating-point Numbers to be equal.

When the business scenario needs to deal with a large range of values or needs to accurately deal with floating point values, arbitrary precision mathematical functions should be used, such as: trading system, e-commerce system, etc.

The current project encapsulates arbitrary precision mathematical functions to make it easier to solve large number and floating point precision problems in PHP.



Installation

First please make sure your PHP has been installed and the BC Math extension, if not support, specific installation reference website: http://php.net/manual/en/bc.installation.php

See the way:

php -info | grep bcmath

If you can see the output

bcmath
bcmath.scale => 0 => 0

BC Math is available

Start the installation:

1. Way 1: By composer

composer require chawuciren/bignumber

2. Way 2: Directly download and include

Download the source code directly, introducing src/bignumber.php



Begin to use

Initialization of the incoming numeric string should be used, such as a out of numerical and later returned to the front interface, the type of stored in the database as a DECIMAL, should first initialize the value of the BigNumber will be removed, and then used in the code BigNumber calculated, after the return to use on interface: value () method for numerical output string

1. Way 1: use new statements

use \chawuciren\BigNumber;

$number = new BigNumber('0.002', 3);

2. Way 2: use the static method build

use \chawuciren\BigNumber;

$number = BigNumber::build('0.002', 3);

3. Way 3: assign values using the valueOf method

use \chawuciren\BigNumber;

$number = new BigNumber();
$number->valueOf('0.002', 3);


Sample

use \chawuciren\BigNumber;

$number = new BigNumber('1.0001', 4);
$number->add('0.0004')->sub('1')->mul('4')->div('5');
var_dump($number->value()); //string(5) "0.0002"

$number2 = new BigNumber('0.0002');
var_dump($number->eq($number2)) //bool true


Methods list

1.valueOf

Set a value to the BigNumber instance

Parameters:
Parameter names Type Instructions
number String/BigNumber A string or number of type BigNumber
scale Int Precision of number
Return value: BigNumber(Current instance)
Sample:
$number = new \chawuciren\BigNumber();
$number->valueOf('0.002', 3);
var_dump($number); //object(chawuciren\BigNumber)

2.toString

Returns a value as a string

Parameters:

No parameters

Reture value: String(Current value)
Sample:
$number = new \chawuciren\BigNumber('0.002', 3);
$str = $number->toString();
var_dump($str); //string(5) "0.002"

3.value

Returns a value of type string, currently an alias of the toString method

Sample:
$number = new \chawuciren\BigNumber('0.002', 3);
$str = $number->value();
var_dump($str); //string(5) "0.002"

4.add

Adds the current value plus the number value passed in

Parameters:
Parameter names Type Instructions
number String/BigNumber The value used to add
Reture value: BigNumber(Current instance)
Sample:
$number = new \chawuciren\BigNumber('0.002', 3);
$number->add('0.003');
var_dump($number->value()); //string(5) "0.005"

5.sub

Subtracts the current value from the number value passed in

Parameters:
Parameter names Type Instructions
number String/BigNumber The value used to subtract
Reture value: BigNumber(Current instance)
Sample:
$number = new \chawuciren\BigNumber('0.002', 3);
$number->sub('0.001');
var_dump($number->value()); //string(5) "0.001"

6.mul

Multiply the current value by the number value passed in

Parameters:
Parameter names Type Instructions
number String/BigNumber The number used to multiply
Reture value: BigNumber(Current instance)
Sample:
$number = new \chawuciren\BigNumber('0.002', 3);
$number->sub('0.001');
var_dump($number->value()); //string(5) "0.001"

7.div

Divide the current value by the number value passed in

Parameters:
Parameter names Type Instructions
number String/BigNumber Divide the current value by the number value passed in
Reture value: BigNumber(Current instance)
Sample:
$number = new \chawuciren\BigNumber('0.002', 3);
$number->div('2');
var_dump($number->value()); //string(5) "0.001"

8.mod

Modulates the current value with the number value passed in

Parameters:
Parameter names Type Instructions
number String/BigNumber The value used to take a modulus
Reture value: BigNumber(Current instance)
Sample:
$number = new \chawuciren\BigNumber('108');
$number->mod('10');
var_dump($number->value()); //string(1) "8"

9.pow

Take the current value to the number power

Parameters:
Parameter names Type Instructions
number String/BigNumber The number of powers
Reture value: BigNumber(Current instance)
Sample:
$number = new \chawuciren\BigNumber('2');
$number->pow('2');
var_dump($number->value()); //string(1) "4"

10.sqrt

Take the square root of the current value

Parameters:

No parameters

Reture value: BigNumber(Current instance)
Sample:
$number = new \chawuciren\BigNumber('16');
$number->sqrt();
var_dump($number->value()); //string(1) "4"

11.eq

Determine whether the current value equals the value of number

Parameters:
Parameter names Type Instructions
number String/BigNumber The rvalue participating in the judgment
Reture value: Bool (True: equal; False: no equal)
Sample:
$number = new \chawuciren\BigNumber('0.00000000000000000001', 20);
$number2 = new \chawuciren\BigNumber('0.00000000000000000001', 20);
var_dump($number->eq($number2)); //bool(true)

12.gt

Determine whether the current value is greater than the number value

Parameters:
Parameter names Type Instructions
number String/BigNumber The rvalue participating in the judgment
Reture value: Bool (True: greater than; False: no more than)
Sample:
$number = new \chawuciren\BigNumber('0.00000000000000000002', 20);
$number2 = new \chawuciren\BigNumber('0.00000000000000000001', 20);
var_dump($number->gt($number2)); //bool(true)

13.egt

Determine whether the current value is greater than or equal to the number value

Parameters:
Parameter names Type Instructions
number String/BigNumber The rvalue participating in the judgment
Reture value: Bool (True: greater than or equal to; False: not greater than and not equal to)
Sample:
$number = new \chawuciren\BigNumber('0.00000000000000000002', 20);
$number2 = new \chawuciren\BigNumber('0.00000000000000000001', 20);
var_dump($number->egt($number2)); //bool(true)

14.lt

Determine whether the current value is less than the number value

Parameters:
Parameter names Type Instructions
number String/BigNumber The rvalue participating in the judgment
Reture value: Bool (True: less than; False: no less than)
Sample:
$number = new \chawuciren\BigNumber('0.00000000000000000002', 20);
$number2 = new \chawuciren\BigNumber('0.00000000000000000001', 20);
var_dump($number->lt($number2)); //bool(false)

15.elt

Determine whether the current value is less than or equal to the value of number

Parameters:
Parameter names Type Instructions
number String/BigNumber The rvalue participating in the judgment
Reture value: Bool (True: less than or equal to; False: not less than and not equal to)
Sample:
$number = new \chawuciren\BigNumber('0.00000000000000000002', 20);
$number2 = new \chawuciren\BigNumber('0.00000000000000000001', 20);
var_dump($number->lt($number2)); //bool(false)

统计信息

  • 总下载量: 180
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 19
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 19
  • Watchers: 1
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-11-12

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固