草庐IT

half-precision-float

全部标签

php - 在 PHP 中检测 float 是否具有零分数值(例如 125.00)的最佳方法是什么?

看,我想写一个函数,它接受一个float参数并将float四舍五入到最接近的货币值(一个有两位小数的float)但是如果float参数有一个零分数(即后面的所有零小数位)然后它将float作为整数返回(或者截断小数部分,因为它们无论如何都是零。)。但是,我发现我不知道如何确定分数是否为零。我不知道是否有一个PHP函数已经这样做了。我看过了我能想到的最好的办法是先将float转换为整数,然后从float中减去整数部分,然后检查差值是否为零。 最佳答案 if($value==round($value)){//nodecimal,goah

php - PHP float 使用的最佳实践

我读过Floating-Pointguide关于在PHP中使用float类型。答案是使用BCMath扩展。使用字符串可以将float表示为精确类型并防止出现float和整数问题。与此同时,我还没有在Github和这个使用BC数学扩展的网站上找到任何好的例子。什么是强制PHP使用字符串的干净方法,如何评估它们?特别是将BCMath扩展与MySQLDECIMAL数据类型一起使用的最佳方式是什么?我用PHP5.4.10测试的例子,正确答案是:0.2999999999996';echobcsub($a,$b);//0.2999999999996echo'';$a="0.3";$b="0.000

PHP json_decode整数和 float 到字符串

我想预解析一个json并将json中的所有数字(整数或float)转换为字符串。例如:{"integer":10000,"big_integer":100000999499498485845848584584584,"float1":1.121212,"float2":8.226347662837406e+09}为此:{"integer":"10000","big_integer":"100000999499498485845848584584584","float1":"1.121212","float2":"8226347662.837406"}更新我找到了following但它不

php - Windows w/Precise64 上的 Vagrant 运行 php 非常慢

所以我在我的开发机器上用虚拟主机设置了vagrant,但是当我尝试一个非常简单的“helloworld”回显时,它会在处理文件之前挂起大约10秒。HTML文件呈现速度非常快。我什至从哪里开始解决这个问题?在做了一些研究之后,其他人提示php和virtualbox/vagrant的性能低下。许多人声称主机/guest之间共享文件夹的使用是造成这种情况的原因。我已尝试更改共享文件夹位置,使其不指向/var/www/我还尝试通过删除“config.vm.synced_folder”语句来完全删除共享文件夹配置在每种情况下,我都重新配置了盒子,但仍然遇到相同的性能问题,在网络浏览器中点击一个简

php - 将 float 转换为 HH :MM format

我有一个关于格式化字符串或float的问题。所以基本上我有这些数字需要如图所示输出:9.8333333333333->09:505.5555555555556->05:3310.545454545455->10:331.3333333333333->01:2020.923076923077->20:55这是我编写的函数,它在我需要的方面做得很糟糕。functiongetTime($dist,$road){$roads=array('I'=>65,'H'=>60,'M'=>55,'S'=>45);$time=$dist/$roads[$road];returnround($time-1)

PHP 未定义常量 PHP_ROUND_HALF_DOWN

我正在处理的项目中有一些PHP代码使用了PHP的round函数。在我的本地主机上,我没有在我的模式参数周围包含任何引号,将其声明为PHP_ROUND_HALF_DOWN。但是,当推送到我的服务器时,我收到错误消息:UseofundefinedconstantPHP_ROUND_HALF_DOWN-assumed'PHP_ROUND_HALF_DOWN'Warning(2):Wrongparametercountforround()[APP/views/helpers/time_left.php,line14]现在,当我将单引号添加到模式参数时,第一个错误消失了,但是“错误的参数计数”仍

PHP:将任何 float 格式化为十进制扩展

我想创建一个函数formatFloat(),它接受任何float并将其格式化为十进制扩展字符串。例如:formatFloat(1.0E+25);//"10,000,000,000,000,000,000,000,000"formatFloat(1.0E+24);//"1,000,000,000,000,000,000,000,000"formatFloat(1.000001);//"1.000001"formatFloat(1.000001E-10);//"0.0000000001000001"formatFloat(1.000001E-11);//"0.000000000010000

PHP:依赖于语言环境的 float 到字符串转换

我坐在一台有en_US语言环境和这段PHP代码的机器上setlocale(LC_ALL,'de_DE.utf8');var_dump((string)1.234);返回string(5)"1.234"而在我同事的德语语言环境的机器上,它返回string(5)"1,234"为什么PHP在将float类型转换为字符串时使用语言环境?我怎样才能禁用它?我想让这个函数在所有机器上都返回string(5)"1.234",而不管任何语言环境设置如何。其次也是次要的:为什么PHP会忽略我机器上的setlocale? 最佳答案 Whytheheck

php - PHP 实际上使用 IEEE-754 float 吗?

IEEE-754浮点标准说:Fourmutuallyexclusiverelationsarepossible:lessthan,equal,greaterthan,andunordered.ThelastcaseariseswhenatleastoneoperandisNaN.EveryNaNshallcompareunorderedwitheverything,includingitself.然而(codepadhere):NAN;//trueINFINF;//true很明显,NAN和NAN之间(以及INF和INF之间)存在不止一种关系,而实际上应该只有一种关系。在许多(大多数?所

PHP - GMP 和 float ?

以下代码输出0,这是不正确的:$r=gmp_pow(gmp_init('-1.7976931348623157'),308);echogmp_strval($r);我的印象是GMP库能够处理float,还是我的代码有误? 最佳答案 GMPlibrarywascapableofhandlingfloatingpointnumbers,不是。您可以使用以下方法进行测试:echogmp_strval(gmp_init('18'));//18echogmp_strval(gmp_init('1.8'));//0现在,您可以做的是使用BCMa