在javascript中将浮点数据类型更改为int

在javascript中将浮点数据类型更改为int,javascript,Javascript,我们有一个非常古老的JavaScript SDK(内置核心JavaScript),在这个SDK中对这个脚本进行更改非常困难 我们在脚本SDK.dispatch(“action”,value)中有这个函数。此函数必须由客户端webiste调用,并且它们可以向其传递任何类型的数据。我们现在遇到了这样一种情况:客户端调用SDK.dispatch(“add to cart”),{item:“name”,price:120.00}。120.00是一个浮点值,后端需要值和数据类型 但是,JavaScript

我们有一个非常古老的JavaScript SDK(内置核心JavaScript),在这个SDK中对这个脚本进行更改非常困难

我们在脚本SDK.dispatch(“action”,value)中有这个函数。此函数必须由客户端webiste调用,并且它们可以向其传递任何类型的数据。我们现在遇到了这样一种情况:客户端调用SDK.dispatch(“add to cart”),{item:“name”,price:120.00}。120.00是一个浮点值,后端需要值和数据类型

但是,JavaScript内部将120.00从float更改为int,因为我们无法事先知道数据类型,所以我们将错误的数据类型传递到后端

我正在寻找一些关于如何在JavaScriptSDK中维护数据及其类型的见解

smartech('dispatch', 'myEvent', {price: 115.00});
// this line of code executed by client and 
// we don't have control over the value of price and data type
function dispatch(event, payload) {
 // event = myEvent
 // payload = {price: 115.00} 
 /* in this price attribute is a float send by a client but gets converted to integer by JavaScript we need the datatype to be maintained by JS as our backend required datatype, or it breaks
 */

 /* 
    Business logic : send data to backend
 */

 var promise = new Promise (function (resolve, reject) {
    var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    /*if (this.readyState == 4 && this.status == 200) {
     resolve(true);
    } else {
     reject(false);
    }*/
  };
  xhttp.open("POST", "backendURL", payload);
  xhttp.send();
 });
}
如何在向函数接受数据时维护有效负载的数据类型。因为我的后端严格依赖于数据类型

我也在浏览器控制台上试用过

var a = 210.00;
console.log(a);
在控制台中,我得到了210,这是整数


因为我的后端应该是float,但我得到的是int值,所以我的后端会丢弃这些调用。我知道这是一个非常极端的情况,但我需要全局处理它。

您必须使用parseFloattoFixed来保持小数点后2位

var a=parseFloat(210.00).toFixed(2);

console.log(a);
这有什么作用?
a.toFixed(2);
?还有“后端所需的数据类型,否则它会中断”这是一个糟糕的设计。将数字转换为字符串是的,我知道,但这是它的设计方式,现在不可能更改架构是的,在JS中,如果数字没有任何小数,则将其转换为int。这是正常行为。您可以做的是,当您必须将数据传递到后端时,使用
。toFixed(2)
确保数字至少有2个分数。这对输出没有影响。@Chin.Udara,是的,它不会更改输出,但它会维护出现问题的数据类型,因此现在类型将是float,如果我们解析.00,则parseFloat跳过.00。这就是为什么如果您仅使用parseFloat y检查210.03,我会将其设置为fixed你会得到输出210.03希望你明白我的意思谢谢,但在我的情况下,价格不是固定的,有时它可能会浮动,所以我只想保持它的数据类型,因为它仍然没有意义使用parseFloat(210.03)。您的答案将首先解析浮点,然后添加小数点,这反过来会产生一个字符串。也许您想执行
parseFloat((210).toFixed(2));
注意
210的偏执。toFixed(2)
但是,当您通过http传递数据时,数据类型不会被保留。