如何在PHP中将指数数(SimpleXML对象字符串)转换为十进制

如何在PHP中将指数数(SimpleXML对象字符串)转换为十进制,php,soap,simplexml,exponential,Php,Soap,Simplexml,Exponential,我正在进行一个SOAP调用以从服务器获取一些数据,并正在使用PHP中可用的SimpleXML扩展读取这些数据。现在,在amount字段中,我得到了类似于2.7965248E9的值,并使用了round或number_格式函数将其转换为整数/十进制数,但结果仅为2 现在,我从SOAP调用中获得了多个amount值。我得到了一些数值,比如2.796565248E9200.02000.0。当我使用round或number_格式函数时,我分别得到了200.0和2000.0的合适值,比如200和2000。但

我正在进行一个SOAP调用以从服务器获取一些数据,并正在使用PHP中可用的SimpleXML扩展读取这些数据。现在,在amount字段中,我得到了类似于2.7965248E9的值,并使用了round或number_格式函数将其转换为整数/十进制数,但结果仅为2

现在,我从SOAP调用中获得了多个amount值。我得到了一些数值,比如2.796565248E9200.02000.0。当我使用round或number_格式函数时,我分别得到了200.0和2000.0的合适值,比如200和2000。但对于2.7965248E9,我只得到了2,而不是预期的2796565248

首先我感到困惑,但当我转储保存该值的变量$value->amount时,我得到了这个响应

object(SimpleXMLElement)#354 (1) {
  [0]=>  string(13) "2.796565248E9"
}
现在,我认为正因为如此,它没有显示出预期的结果。请在这里指导我。

尝试使用第二个参数进行四舍五入,该参数是小数点后值的偏移量:-

您可以参考此链接:-

尝试使用第二个参数进行四舍五入,该参数是小数点后值的偏移量:-

您可以参考此链接:- 使用float将有所帮助。请尝试以下代码:

<?php
$scientific_str="2.796565248E9";
$scientific_num=(float) $scientific_str;
var_dump($scientific_num);
使用float将有所帮助。请尝试以下代码:

<?php
$scientific_str="2.796565248E9";
$scientific_num=(float) $scientific_str;
var_dump($scientific_num);

传递给round的值需要在函数运行之前转换为float,可以由代码显式转换,也可以由PHP引擎隐式转换。如果传入字符串,它将自动强制为浮点,但如果传入对象(如此处的SimpleXMLElement),它将转换为int

这是因为PHP内部存在一个问题,归档为和一些类似的副本,看起来是这样的。基本上,引擎无法向具有自定义转换代码的对象请求数字,因此无法在浮点和整数之间进行巧妙选择

同时,显式转换为float,例如$value=圆形float$my_object,$precision;我们将避免这个问题


转换为字符串也会起作用,因为引擎知道在这种情况下应该将字符串转换为浮点,所以在从SimpleXML提取元素和属性时,在元素和属性前面添加字符串是一种有用的常规习惯。这还可以避免其他问题,例如意外地尝试在会话中序列化对象,或者由于可以从某个值对象访问XML,因此将XML保留在内存中的时间过长。

在函数运行之前,需要通过代码显式地将传递给round的值转换为float,或者由PHP引擎隐式地执行。如果传入字符串,它将自动强制为浮点,但如果传入对象(如此处的SimpleXMLElement),它将转换为int

这是因为PHP内部存在一个问题,归档为和一些类似的副本,看起来是这样的。基本上,引擎无法向具有自定义转换代码的对象请求数字,因此无法在浮点和整数之间进行巧妙选择

同时,显式转换为float,例如$value=圆形float$my_object,$precision;我们将避免这个问题


转换为字符串也会起作用,因为引擎知道在这种情况下应该将字符串转换为浮点,所以在从SimpleXML提取元素和属性时,在元素和属性前面添加字符串是一种有用的常规习惯。这还避免了其他问题,例如意外地尝试在会话中序列化对象,或者由于可以从某个值对象访问XML,因此将XML保留在内存中的时间过长。

它起作用了。我很确定我也尝试过浮动,但它不起作用,或者我可能忽略了这一点。但很高兴你的解决方案奏效了。知道吗,为什么圆函数在我的场景中不起作用?很奇怪。这个回合也应该有效。我试着在“2.7965248E9”上回音;,它也给出了同样的结果。如果我使用这个回音循环'2.7965248E9';,我得到了想要的答案。但我不知道,为什么它在我的场景中不起作用,在我的场景中,我从xml读取数据。总是得到2。需要专家的建议。@TonyMontana想了想,这也许应该是原始问题的答案,所以我把它改成了一个。它奏效了。我很确定我也尝试过浮动,但它不起作用,或者我可能忽略了这一点。但很高兴你的解决方案奏效了。知道吗,为什么圆函数在我的场景中不起作用?很奇怪。这个回合也应该有效。我试着在“2.7965248E9”上回音;,它也给出了同样的结果。如果我使用这个回音循环'2.7965248E9';,我得到了想要的答案。但我不知道,为什么它在我的场景中不起作用,在我的场景中,我从xml读取数据。总是得到2。需要专家的建议。@TonyMontana想一想,这可能是对原始问题的回答,所以我把它移到了一个问题中。也许你是在尝试对字符串进行取整,而不是整数值/浮点值。您是否尝试将案例中的字符串转换为int/float,然后取整
?W3Schools比以前稍微好一些,但是对于PHP函数,PHP.net上的官方参考通常是更好的资源。e、 g.在这种情况下,我注意到W3仍然存在,但似乎不再从任何地方链接。可能您试图对字符串进行四舍五入,而不是整数/浮点值。您是否尝试过将本例中的字符串转换为int/float,然后进行取整?W3Schools比以前稍微好一些,但对于PHP函数来说,PHP.net上的官方参考通常是更好的资源。e、 在这种情况下,我注意到w3schools仍然存在,但似乎不再从任何地方链接。