⑴ php将整数数字转换为罗马数字实例分享
方法一:自定义函数
我们可以自己手动编写一个函数来实现此功能,这个函数可以将数字作为第一个参数,将其转换为罗马并返回。
注:大多数算法只能在1-4999的范围内工作,如果使用特大数,脚本将失败。
实现代码:
<?php
header("content-type:text/html;charset=utf-8");
//将数字转换为罗马表示形式
function
numberToRoman($num)
{
//
Be
sure
to
convert
the
given
parameter
into
an
integer
$n
=
intval($num);
$result
=
'';
//
Declare
a
lookup
array
that
we
will
use
to
traverse
the
number:
$lookup
=
array(
'M'
=>
1000,
'CM'
=>
900,
'D'
=>
500,
'CD'
=>
400,
'C'
=>
100,
'XC'
=>
90,
'L'
=>
50,
'XL'
=>
40,
'X'
=>
10,
'IX'
=>
9,
'V'
=>
5,
'IV'
=>
4,
'I'
=>
1
);
foreach
($lookup
as
$roman
=>
$value)
{
//
Look
for
number
of
matches
$matches
=
intval($n
/
$value);
//
Concatenate
characters
$result
.=
str_repeat($roman,
$matches);
//
Substract
that
from
the
number
$n
=
$n
%
$value;
}
return
$result;
}
echo
'整数数字转换为罗马数字:<br><br>';
//
VIII
echo
'数字8:'.numberToRoman(8).'<br>';
//
CXXIII
echo
'数字123:'.numberToRoman(123).'<br>';
//
MMCCCLV
echo
'数字2355:'.numberToRoman(2355).'<br>';
//
MMMMCMXCIX
echo
'数字4999:'.numberToRoman(4999).'<br>';
?>
输出:
方法二:使用Romans库
Romans库是一个非常简单的PHP罗马数字库,允许您将整数转换为其罗马表示,反之亦然。
注:如果没有该库,请先需要安装;安装好Romans库后,就能够使用其命名空间并使用可帮助转换数字的函数。
Romans库包含一对简单的过滤器,用于将具有罗马数字的字符串转换为表示输入为十进制的int,将十进制int转换为具有罗马数字作为结果的字符串。
1、整数转换为罗马数字
要将整数转换为罗马表示,需要使用IntToRoman类,创建一个实例并从中调用filter方法。此方法将数字作为第一个参数,并返回带有罗马数字的字符串:
<?php
use
Romans\Filter\IntToRoman;
$filter
=
new
IntToRoman();
$result
=
$filter->filter(1999);
echo
$result;
?>
输出:
MCMXCIX
2、罗马数字转换为整数
要将罗马数字转换为整数表示,需要使用RomanToInt类,创建一个实例并从中调用filter方法。此方法将使用罗马数字的字符串作为第一个参数,并返回一个带数值的整数:
<?php
use
Romans\Filter\RomanToInt;
$filter
=
new
RomanToInt();
$result
=
$filter->filter('MCMXCIX');
echo
$result;
?>
输出:
1999
您可能感兴趣的文章:PHP5中使用mysqli的prepare操作数据库的介绍PHP中单例模式的使用场景与使用方法讲解PHP自动生成缩略图函数的源码示例PHP添加文字水印或图片水印的水印类完整源代码与使用示例PHP实现对数字分隔加千分号的方法PHP生成指定范围内的N个不重复的随机数PHP中十六进制颜色与RGB颜色值互转的方法Ubuntu16.04搭建php5.6Web服务器环境PHP标准库(PHP
SPL)详解PHP后台备份MySQL数据库的源码实例
⑵ php将字符串中的阿拉伯数字转换为中文数字
为了方便调用我喜欢使用函数的方法
<?php
functionnumToWord($num)
{
$chiNum=array('零','一','二','三','四','五','六','七','八','九');
$chiUni=array('','十','百','千','万','亿','十','百','千');
$chiStr='';
$num_str=(string)$num;
$count=strlen($num_str);
$last_flag=true;//上一个是否为0
$zero_flag=true;//是否第一个
$temp_num=null;//临时数字
$chiStr='';//拼接结果
if($count==2){//两位数
$temp_num=$num_str[0];
$chiStr=$temp_num==1?$chiUni[1]:$chiNum[$temp_num].$chiUni[1];
//当以1开头都是十一,十二,以十开头的我们就取$chiUni[i]也就是十
当不是以1开头时,而是以2,3,4,我们取这个数字相应的中文并拼接上十
$temp_num=$num_str[1];
$chiStr.=$temp_num==0?'':$chiNum[$temp_num];
//取得第二个值并的到他的中文
}elseif($count>2){
$index=0;
for($i=$count-1;$i>=0;$i--){
$temp_num=$num_str[$i];//获取的个位数
if($temp_num==0){
if(!$zero_flag&&!$last_flag){
$chiStr=$chiNum[$temp_num].$chiStr;
$last_flag=true;
}
}else{
$chiStr=$chiNum[$temp_num].$chiUni[$index%9].$chiStr;
//$index%9index原始值为0,所以开头为0后面根据循环得到:0,1,2,3...(不知道为什么直接用$index而是选择$index%9毕竟两者结果是一样的)
//当输入的值为:1003,防止输出一千零零三的错误情况,$last_flag就起到作用了当翻译倒数第二个值时,将$last_flag设定为true;翻译第三值时在if(!$zero&&!$last_flag)的判断中会将其拦截,从而跳过
$zero_flag=false;
$last_flag=false;
}
$index++;
}
}else{
$chiStr=$chiNum[$num_str[0]];//单个数字的直接取中文
}
return$chiStr;
}
echonumToWord(12345);
?>
结果截图:
⑶ php 如何将 字符串 转换为 数字
不需要转,PHP会自动处理
⑷ php 字符串转换成数字
整数 intval($string, 10); 第二个参数表示转换为10进制整数
不一定是整数 floatval($string)
⑸ php 26位字母转换成数字
<?php
$str="aa";//写你想要算的字符串;
$v;
function getv($s){
$arr=str_split($s,1);
for ($i=0;$i<strlen($s);$i++)
{
$v=gett($arr[$i])*getw(strlen($s)-$i-1)+$v;
}
echo $v;
}
function getw($w){
$x=1;
for ($i=0;$i<$w;$i++){
$x=26*$x;
}
return $x;
}
function gett($ch){
return (ord($ch)-96);
}
echo getv($str);
?>
aa,刚好就是27.你试试吧
⑹ PHP如何格式化数字
PHP格式化数字的函数是number_format
我建议你去下载一个PHP的使用手册,或者看网上的在线手册也行。
http://www.itlearner.com/code/php/
关于他的用法如下:
语法: string number_format(float number, int [decimals], string [dec_point], string [thousands_sep]);
返回值: 字符串
函数种类: 数学运算
内容说明
本函数用来将浮点参数 number 格式化。若没加参数 decimals 则返回的字符串只要整数部份,加了此参数才依参数指定的小数点位数返回。参数 dec_point 表示小数点的表示方式方法,默认值是 ".",若需要转换成其它的小数点就可以在这个参数改掉。参数 thousands_sep 为整数部份每三位的分隔符号,默认值是 ","。本函数最特别的地方就是参数数目,最少要有一个,也就是欲格式化的字符串;也可以有二个或者四个参数,但不能用三个参数。治募�注意的是指定小数点的位数之后的数字直接舍弃,没有四舍五入的情形。
使用范例
<?
$short_pi = "3.14159";
$my_pi = number_format($short_pi, 2);
echo $my_pi."\n"; // 3.14
$foo = 850017.9021;
$new_foo = number_format($foo, 3, ".", " ");
echo $new_foo."\n"; // 850 017.902
?>
⑺ PHP如何将从二进制文件中读取的字节转换为数字
bindec函数可转换二进制数为十进制数
⑻ php怎么把数组里的数字值转义成纯数字
1、你可以用current来输出:
echocurrent($_clean['ids']);
2、implode函数生成的本领就是个字符串,本来就可以用echo输出……
⑼ PHP 怎么用parseInt
parseInt是javascript中的函数,用于将指定进制的数字字符串转换为十进制数字,第一个参数为待转换的字符串,第二个参数为字符串的进制数,默认为10。
在php中如果要将字符串转为数字,可以用intval函数:
intintval(mixed$var[,int$base=10])
通过使用指定的进制 base 转换(默认是十进制),返回变量 var的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。
var变量为要转换成 integer 的数量值
base变量可选,默认为10,为转化所使用的进制
如果 base 是 0,通过检测 var 的格式来决定使用的进制:
如果字符串包括了 "0x" (或 "0X") 的前缀,使用 16 进制 (hex);否则,
如果字符串以 "0" 开始,使用 8 进制(octal)
否则,将使用 10 进制 (decimal)。
成功时返回 var 的 integer 值,失败时返回 0。空的 array 返回 0,非空的 array 返回 1。
用法基本与JavaScript中的parseInt一致。
⑽ php编程:将26位字母进制转换为10进制数字,如何做
主要是加权法。
10进制结果=∑各位上的值*(进制数^各位权值)
a^b表示a的b次方。
比如你说的26进制
a->1
s->19
d->4
那么asd=1*(26^2)+19*(26^1)+4*(26^0)=1174(10进制)
如果是8进制数456=4*(8^2)+5*(8^2)+6*(8^0)=302(10进制)
分太少,不写源程序了,建立索引数组$arr[a]=1$,arr[b]=2..
再把输入的字母拆成单字符倒序数组使得$single[2]=a,$single[1]=s,$single[0]=d,按上面方法权值相加。
你懂的。