开发者

Cast a numeric string as float type data

开发者 https://www.devze.com 2023-01-08 18:56 出处:网络
What is the PHP command that does somethi开发者_开发知识库ng similar to intval(), but for decimals?

What is the PHP command that does somethi开发者_开发知识库ng similar to intval(), but for decimals?

Eg. I have string "33.66" and I want to convert it to decimal value before sending it to MSSQL.


How about floatval()?

$f = floatval("33.66");

You can shave a few nanoseconds off of type conversions by using casting instead of a function call. But this is in the realm of micro-optimization, so don't worry about it unless you do millions of these operations per second.

$f = (float) "33.66";

I also recommend learning how to use sscanf() because sometimes it's the most convenient solution.

list($f) = sscanf("33.66", "%f");


If you mean a float:

$var = floatval("33.66")

Or

$var = (float)"33.66";

If you need the exact precision of a decimal, there is no such type in PHP. There is the Arbitrary Precision Mathematics extension, but it will return strings, so it's only usefull for you when performing calculations.


You could try floatval, but floats are potentially lossy.

You could try running the number through sprintf to get it to a more correct format. The format string %.2f would produce a floating-point-formatted number with two decimal places. Excess places get rounded.

I'm not sure if sprintf will convert the value to a float internally for formatting, so the lossy problem might still exist. That being said, if you're only worrying about two decimal places, you shouldn't need to worry about precision loss.


php is a loosely typed language. It doesn't matter if you have

$x = 33.66;

or

$x = "33.66";

sending it to mssql will be the same regardless.

Are you just wanting to make sure it is formatted properly, or is an actual float?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号