首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分裂4位数

分裂4位数
EN

Stack Overflow用户
提问于 2013-10-18 18:58:42
回答 2查看 682关注 0票数 0

我想用4位小数除以4位数。

输入:

代码语言:javascript
复制
Input 1 : 5546.263 
Input 2 : 03739.712  /*(some time may have one zero at first)*/

结果:(数组)

代码语言:javascript
复制
Result of input 1 :  0 => 55 , 1 => 46.263
Result of input 2 :  0 => 37 , 1 => 39.712

输入是GPS数据,总有4位数字作为小数/3位数字作为小数点,有些时候开始时为0。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-18 19:06:13

您可以使用以下函数:

代码语言:javascript
复制
function splitNum($num) {
    $num = ltrim($num, '0');
    $part1 = substr($num, 0, 2);
    $part2 = substr($num, 2);
    return array($part1, $part2);
}

测试用例1:

代码语言:javascript
复制
print_r( splitNum('5546.263') );

输出:

代码语言:javascript
复制
Array
(
    [0] => 55
    [1] => 46.263
)

测试用例2:

代码语言:javascript
复制
print_r( splitNum('03739.712') );

输出:

代码语言:javascript
复制
Array
(
    [0] => 37
    [1] => 39.712
)

Demo!

票数 2
EN

Stack Overflow用户

发布于 2013-10-18 19:06:47

^0*([0-9]{2})([0-9\.]+)应该很好地工作,并做您想做的事情:

代码语言:javascript
复制
$input = '03739.712';

if (preg_match('/^0*([0-9]{2})([0-9\.]+)/', $input, $matches)) {
    $result = array((int)$matches[1], (float)$matches[2]);
}

var_dump($result); //array(2) { [0]=> int(37) [1]=> float(39.712) }

Regex尸检:

  • ^ -字符串必须从这里开始
  • 0* -字符'0‘重复0次或更多次
  • ([0-9]{2}) -一个在0到9之间匹配一个数字的捕获组,正好重复2次。
  • ([0-9\.]+) -一个捕捉组,它匹配0到9之间的数字或重复1次或多次的句点。

还可以将$添加到末尾,以指定“字符串必须在此结束”。

Note__:由于我们在第一次匹配中转换为int,所以可以省略0*部分,但是如果计划不进行转换,那么将其留在其中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19457152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档