wp_send_json* functions do a weird float values conversion
I have a method that does simple math and returns a float value. I use this value as an argument for wp_send_json() function. Values are converted in a way that I don't understand.
$x = $calculator->getValue(); // Returns 3.02
$y = 3.02;
gettype($x); // Returns double
gettype($y); // Returns bouble
wp_send_json_success(%x); // prints {"success":false,"data":3.0199999999999996}
wp_send_json_success($y); // prints {"success":false,"data":3.02}
I don't' understand it at all. Both $x and $y values are exactly the same in terms of values and types. So why the outputs produced by wp_send_json_success are different?
Update:
Now I'm even more confused
$x === $y; // returns false
$x == $y; // returns false too!
How is it possible? When I do var_dump I can see that the values are the same.
ajax wordpress
add a comment |
I have a method that does simple math and returns a float value. I use this value as an argument for wp_send_json() function. Values are converted in a way that I don't understand.
$x = $calculator->getValue(); // Returns 3.02
$y = 3.02;
gettype($x); // Returns double
gettype($y); // Returns bouble
wp_send_json_success(%x); // prints {"success":false,"data":3.0199999999999996}
wp_send_json_success($y); // prints {"success":false,"data":3.02}
I don't' understand it at all. Both $x and $y values are exactly the same in terms of values and types. So why the outputs produced by wp_send_json_success are different?
Update:
Now I'm even more confused
$x === $y; // returns false
$x == $y; // returns false too!
How is it possible? When I do var_dump I can see that the values are the same.
ajax wordpress
add a comment |
I have a method that does simple math and returns a float value. I use this value as an argument for wp_send_json() function. Values are converted in a way that I don't understand.
$x = $calculator->getValue(); // Returns 3.02
$y = 3.02;
gettype($x); // Returns double
gettype($y); // Returns bouble
wp_send_json_success(%x); // prints {"success":false,"data":3.0199999999999996}
wp_send_json_success($y); // prints {"success":false,"data":3.02}
I don't' understand it at all. Both $x and $y values are exactly the same in terms of values and types. So why the outputs produced by wp_send_json_success are different?
Update:
Now I'm even more confused
$x === $y; // returns false
$x == $y; // returns false too!
How is it possible? When I do var_dump I can see that the values are the same.
ajax wordpress
I have a method that does simple math and returns a float value. I use this value as an argument for wp_send_json() function. Values are converted in a way that I don't understand.
$x = $calculator->getValue(); // Returns 3.02
$y = 3.02;
gettype($x); // Returns double
gettype($y); // Returns bouble
wp_send_json_success(%x); // prints {"success":false,"data":3.0199999999999996}
wp_send_json_success($y); // prints {"success":false,"data":3.02}
I don't' understand it at all. Both $x and $y values are exactly the same in terms of values and types. So why the outputs produced by wp_send_json_success are different?
Update:
Now I'm even more confused
$x === $y; // returns false
$x == $y; // returns false too!
How is it possible? When I do var_dump I can see that the values are the same.
ajax wordpress
ajax wordpress
asked Jan 2 at 16:43
wubewube
77211
77211
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
It has nothing to do with wp_send_json(). In my code the 3.02 value returned by the $calculator->getValue() method is a result of a 10 - 6.98 equation. It returns 3.0199999999999996 but when I var_dump it then the result on the screen is rounded to 3.02. That's why $x == $y returns false.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54010048%2fwp-send-json-functions-do-a-weird-float-values-conversion%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
It has nothing to do with wp_send_json(). In my code the 3.02 value returned by the $calculator->getValue() method is a result of a 10 - 6.98 equation. It returns 3.0199999999999996 but when I var_dump it then the result on the screen is rounded to 3.02. That's why $x == $y returns false.
add a comment |
It has nothing to do with wp_send_json(). In my code the 3.02 value returned by the $calculator->getValue() method is a result of a 10 - 6.98 equation. It returns 3.0199999999999996 but when I var_dump it then the result on the screen is rounded to 3.02. That's why $x == $y returns false.
add a comment |
It has nothing to do with wp_send_json(). In my code the 3.02 value returned by the $calculator->getValue() method is a result of a 10 - 6.98 equation. It returns 3.0199999999999996 but when I var_dump it then the result on the screen is rounded to 3.02. That's why $x == $y returns false.
It has nothing to do with wp_send_json(). In my code the 3.02 value returned by the $calculator->getValue() method is a result of a 10 - 6.98 equation. It returns 3.0199999999999996 but when I var_dump it then the result on the screen is rounded to 3.02. That's why $x == $y returns false.
answered Jan 2 at 17:39
wubewube
77211
77211
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54010048%2fwp-send-json-functions-do-a-weird-float-values-conversion%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown