{"id":26672229,"url":"https://github.com/chawuciren/php-bignumber","last_synced_at":"2026-02-26T00:34:12.755Z","repository":{"id":62501209,"uuid":"157148723","full_name":"chawuciren/php-bignumber","owner":"chawuciren","description":"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","archived":false,"fork":false,"pushed_at":"2019-06-28T03:04:57.000Z","size":18,"stargazers_count":19,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-23T19:49:15.898Z","etag":null,"topics":["bignumber","decimal","float","number","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chawuciren.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-12T03:01:06.000Z","updated_at":"2023-03-17T06:10:13.000Z","dependencies_parsed_at":"2022-11-02T11:47:30.443Z","dependency_job_id":null,"html_url":"https://github.com/chawuciren/php-bignumber","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chawuciren%2Fphp-bignumber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chawuciren%2Fphp-bignumber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chawuciren%2Fphp-bignumber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chawuciren%2Fphp-bignumber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chawuciren","download_url":"https://codeload.github.com/chawuciren/php-bignumber/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248520248,"owners_count":21117905,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bignumber","decimal","float","number","php"],"created_at":"2025-03-26T00:48:55.633Z","updated_at":"2026-02-26T00:34:07.735Z","avatar_url":"https://github.com/chawuciren.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"### php-bignumber\r\n\r\n![release](https://img.shields.io/badge/release-1.0.1-green.svg) ![php](https://img.shields.io/badge/php-%3E=5.3-green.svg) ![downloads](https://img.shields.io/badge/downloads-3.35k-green.svg)\r\n\r\n## About\r\n\r\n[中文文档](./README_zh.md)\r\n\r\nThe 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.\r\n\r\nFloating-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.\r\n\r\nWhen 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.\r\n\r\nThe current project encapsulates arbitrary precision mathematical functions to make it easier to solve large number and floating point precision problems in PHP.\r\n\r\n\u003cbr\u003e\r\n\u003cbr\u003e\r\n\r\n##  Installation\r\n\r\nFirst 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\r\n\r\nSee the way:\r\n\r\n\tphp -info | grep bcmath\r\n\r\nIf you can see the output\r\n\r\n\tbcmath\r\n\tbcmath.scale =\u003e 0 =\u003e 0\r\n\r\nBC Math is available\r\n\r\nStart the installation:\r\n\r\n#### 1. Way 1: By composer\r\n\r\n\tcomposer require chawuciren/bignumber\r\n\r\n#### 2. Way 2: Directly download and include\r\n\r\nDownload the source code directly, introducing src/bignumber.php\r\n\r\n\u003cbr\u003e\r\n\u003cbr\u003e\r\n\r\n## Begin to use\r\n\r\nInitialization 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\r\n\r\n#### 1. Way 1: use new statements\r\n\r\n    use \\chawuciren\\BigNumber;\r\n\r\n\t$number = new BigNumber('0.002', 3);\r\n\r\n#### 2. Way 2: use the static method build\r\n\r\n    use \\chawuciren\\BigNumber;\r\n\r\n\t$number = BigNumber::build('0.002', 3);\r\n\r\n#### 3. Way 3: assign values using the valueOf method\r\n\r\n    use \\chawuciren\\BigNumber;\r\n\r\n\t$number = new BigNumber();\r\n\t$number-\u003evalueOf('0.002', 3);\r\n\r\n\u003cbr\u003e\r\n\u003cbr\u003e\r\n\r\n## Sample\r\n\r\n    use \\chawuciren\\BigNumber;\r\n\r\n\t$number = new BigNumber('1.0001', 4);\r\n    $number-\u003eadd('0.0004')-\u003esub('1')-\u003emul('4')-\u003ediv('5');\r\n    var_dump($number-\u003evalue()); //string(5) \"0.0002\"\r\n\r\n    $number2 = new BigNumber('0.0002');\r\n    var_dump($number-\u003eeq($number2)) //bool true\r\n\r\n\u003cbr\u003e\r\n\u003cbr\u003e\r\n\r\n## Methods list\r\n\r\n#### 1.valueOf\r\n\r\nSet a value to the BigNumber instance\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber | A string or number of type BigNumber |\r\n| scale| Int | Precision of number |\r\n\r\n##### Return value: BigNumber(Current instance)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber();\r\n\t$number-\u003evalueOf('0.002', 3);\r\n\tvar_dump($number); //object(chawuciren\\BigNumber)\r\n\r\n\u003cbr\u003e\r\n\r\n#### 2.toString\r\n\r\nReturns a value as a string\r\n\r\n##### Parameters:\r\n\r\nNo parameters\r\n\r\n##### Reture value: String(Current value)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('0.002', 3);\r\n\t$str = $number-\u003etoString();\r\n\tvar_dump($str); //string(5) \"0.002\"\r\n\r\n#### 3.value\r\n\r\nReturns a value of type string, currently an alias of the toString method\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('0.002', 3);\r\n\t$str = $number-\u003evalue();\r\n\tvar_dump($str); //string(5) \"0.002\"\r\n\r\n\u003cbr\u003e\r\n\r\n#### 4.add\r\n\r\nAdds the current value plus the number value passed in\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber | The value used to add |\r\n\r\n##### Reture value: BigNumber(Current instance)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('0.002', 3);\r\n\t$number-\u003eadd('0.003');\r\n\tvar_dump($number-\u003evalue()); //string(5) \"0.005\"\r\n\r\n\u003cbr\u003e\r\n\r\n#### 5.sub\r\n\r\nSubtracts the current value from the number value passed in\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber | The value used to subtract |\r\n\r\n##### Reture value: BigNumber(Current instance)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('0.002', 3);\r\n\t$number-\u003esub('0.001');\r\n\tvar_dump($number-\u003evalue()); //string(5) \"0.001\"\r\n\r\n\u003cbr\u003e\r\n\r\n#### 6.mul\r\n\r\nMultiply the current value by the number value passed in\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber | The number used to multiply |\r\n\r\n##### Reture value: BigNumber(Current instance)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('0.002', 3);\r\n\t$number-\u003esub('0.001');\r\n\tvar_dump($number-\u003evalue()); //string(5) \"0.001\"\r\n\r\n\u003cbr\u003e\r\n\r\n#### 7.div\r\n\r\nDivide the current value by the number value passed in\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber | Divide the current value by the number value passed in |\r\n\r\n##### Reture value: BigNumber(Current instance)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('0.002', 3);\r\n\t$number-\u003ediv('2');\r\n\tvar_dump($number-\u003evalue()); //string(5) \"0.001\"\r\n\r\n\u003cbr\u003e\r\n\r\n#### 8.mod\r\n\r\nModulates the current value with the number value passed in\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber | The value used to take a modulus |\r\n\r\n##### Reture value: BigNumber(Current instance)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('108');\r\n\t$number-\u003emod('10');\r\n\tvar_dump($number-\u003evalue()); //string(1) \"8\"\r\n\r\n\u003cbr\u003e\r\n\r\n#### 9.pow\r\n\r\nTake the current value to the number power\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber | The number of powers |\r\n\r\n##### Reture value: BigNumber(Current instance)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('2');\r\n\t$number-\u003epow('2');\r\n\tvar_dump($number-\u003evalue()); //string(1) \"4\"\r\n\r\n\u003cbr\u003e\r\n\r\n#### 10.sqrt\r\n\r\nTake the square root of the current value\r\n\r\n##### Parameters:\r\n\r\nNo parameters\r\n\r\n##### Reture value: BigNumber(Current instance)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('16');\r\n\t$number-\u003esqrt();\r\n\tvar_dump($number-\u003evalue()); //string(1) \"4\"\r\n\r\n\u003cbr\u003e\r\n\r\n#### 11.eq\r\n\r\nDetermine whether the current value equals the value of number\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber | The rvalue participating in the judgment |\r\n\r\n\r\n##### Reture value: Bool (True: equal; False: no equal)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('0.00000000000000000001', 20);\r\n\t$number2 = new \\chawuciren\\BigNumber('0.00000000000000000001', 20);\r\n\tvar_dump($number-\u003eeq($number2)); //bool(true)\r\n\r\n\u003cbr\u003e\r\n\r\n#### 12.gt\r\n\r\nDetermine whether the current value is greater than the number value\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber | The rvalue participating in the judgment |\r\n\r\n\r\n##### Reture value: Bool (True: greater than; False: no more than)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('0.00000000000000000002', 20);\r\n\t$number2 = new \\chawuciren\\BigNumber('0.00000000000000000001', 20);\r\n\tvar_dump($number-\u003egt($number2)); //bool(true)\r\n\r\n\u003cbr\u003e\r\n\r\n#### 13.egt\r\n\r\nDetermine whether the current value is greater than or equal to the number value\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber | The rvalue participating in the judgment |\r\n\r\n\r\n##### Reture value: Bool (True: greater than or equal to; False: not greater than and not equal to)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('0.00000000000000000002', 20);\r\n\t$number2 = new \\chawuciren\\BigNumber('0.00000000000000000001', 20);\r\n\tvar_dump($number-\u003eegt($number2)); //bool(true)\r\n\r\n\u003cbr\u003e\r\n\r\n#### 14.lt\r\n\r\nDetermine whether the current value is less than the number value\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber | The rvalue participating in the judgment |\r\n\r\n\r\n##### Reture value: Bool (True: less than; False: no less than)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('0.00000000000000000002', 20);\r\n\t$number2 = new \\chawuciren\\BigNumber('0.00000000000000000001', 20);\r\n\tvar_dump($number-\u003elt($number2)); //bool(false)\r\n\r\n\u003cbr\u003e\r\n\r\n#### 15.elt\r\n\r\nDetermine whether the current value is less than or equal to the value of number\r\n\r\n##### Parameters:\r\n\r\n| Parameter names | Type | Instructions |\r\n|--|--|--|\r\n| number | String/BigNumber |  The rvalue participating in the judgment |\r\n\r\n\r\n##### Reture value: Bool (True: less than or equal to; False: not less than and not equal to)\r\n\r\n##### Sample:\r\n\r\n\t$number = new \\chawuciren\\BigNumber('0.00000000000000000002', 20);\r\n\t$number2 = new \\chawuciren\\BigNumber('0.00000000000000000001', 20);\r\n\tvar_dump($number-\u003elt($number2)); //bool(false)\r\n\r\n\u003cbr\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchawuciren%2Fphp-bignumber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchawuciren%2Fphp-bignumber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchawuciren%2Fphp-bignumber/lists"}