jstewmc/evaluate-number

将各种数字格式转换为整数和浮点数

v0.1.0 2017-03-05 23:37 UTC

This package is auto-updated.

Last update: 2024-08-29 04:14:41 UTC


README

将各种美国数字格式转换为它们的整数或浮点数等价物,包括

  • 分数(例如,'1/2'),
  • 混合数(例如,'1 1/2'),
  • 以逗号分隔的值(例如,'1,000'),
  • 序数(例如,'first'),
  • 基数数(例如,'one hundred'),
  • 美元(例如,$1,000),以及
  • 百分比(例如,10%)。
namespace Jstewmc\EvaluateNumber;

// instantiate the service
$service = new EvaluateNumber();

// evaluate some stuff!
$service(true);            // returns (int) 1
$service(1);               // returns (int) 1
$service('1');             // returns (int) 1
$service(1.5);             // returns (float) 1.5
$service('1.5');           // returns (float) 1.5
$service('1 1/2');         // returns (float) 1.5
$service('3/2');           // returns (float) 1.5
$service('3\2');           // returns (float) 1.5
$service('1000');          // returns (int) 1000
$service('1,000');         // returns (int) 1000
$service('1,000.5');       // returns (float) 1000.5
$service('1st');           // returns (int) 1
$service('second');        // returns (int) 2
$service('one hundred');   // returns (int) 100
$service('10%');           // returns (float) 0.1
$service('$1000')          // returns (int) 1000
$service('1,0,0');         // returns 0
$service('abc');           // returns 0
$service(array());         // returns 0
$service(array('foo'));    // returns 1
$service(new stdClass());  // returns 1

规则

尽可能的情况下,此库遵循PHP原生intval()floatval() 函数的约定。

整数

整数按原样返回

namespace Jstewmc\EvaluateNumber;

$service = new EvaluateNumber();

$service(-1);  // returns (int) -1
$service(0);   // returns (int) 0
$service(1);   // returns (int) 1

浮点数

浮点数按原样返回

namespace Jstewmc\EvaluateNumber;

$service = new EvaluateNumber();

$service(-1.0);  // returns (float) -1.0
$service(0.0);   // returns (float) 0.0
$service(1.0);   // returns (float) 1.0

布尔值

布尔值返回它们的整数等价物

namespace Jstewmc\EvaluateNumber;

$service = new EvaluateNumber();

$service(true);   // returns (int) 1
$service(false);  // returns (int) 0

字符串

以下格式的字符串将返回它们的整数或浮点数等价物

  • 数字字符串(例如,'1');
  • 千位分隔的数字(例如,'1,000');
  • 分数(例如,''1/2');
  • 混合数(例如,'1 1/2');
  • 序数(例如,'one hundred');
  • 基数数(例如,'first');
  • 后缀数(例如,'1st');
  • 百分比(例如,'1%');以及
  • 美元(例如,'$1,000')。

所有其他字符串返回0。

namespace Jstewmc\EvaluateNumber;

$service = new EvaluateNumber();

$service('1');            // returns (int) 1
$service('1,000');        // returns (int) 1000
$service('1/2');          // returns (float) 0.5
$service('1 1/2');        // returns (float) 1.5
$service('one hundred');  // returns (int) 100
$service('first');        // returns (int) 1
$service('1st');          // returns (int) 1
$service('1%');           // returns (float) 0.01
$service('$1,000');       // returns (int) 1000
$service('foo');          // returns (int) 0

数组

空数组返回0,非空数组返回1

namespace Jstewmc\EvaluateNumber;

$service = new EvaluateNumber();

$service([]);              // returns 0
$service(['foo']);         // returns 1
$service(['foo', 'bar']);  // returns 1

对象

此方法不应用于对象。然而,与原生的PHP intval() 或 floatval() 方法不同,此库不会引发错误。相反,对象始终返回1。

namespace Jstewmc\EvaluateNumber;

$service = new EvaluateNumber();

$service(new SplObject());  // returns 1

就这样!

作者

Jack Clayton

许可

MIT

版本

0.1.0,2017年3月5日

  • 首次发布