我正在开发一个UI,我的任务是开发UI,它显示了基于‘地板价格’的正确的'NFT类‘。这是我使用的代码:
function NFTclass(){
try{
if(((EthValue * DollarValue).toPrecision(2)) >= '40.00'){
setnftclasses('Class A NFT')
} else if(((EthValue * DollarValue).toPrecision(2)) >= '30.00'){
setnftclasses('Class B NFT')
} else if(((EthValue * DollarValue).toPrecision(2)) >= '20.00'){
setnftclasses('Class C NFT')
} else if(((EthValue * DollarValue).toPrecision(2)) >= '10.00'){
setnftclasses('Class D NFT')
} else if(((EthValue * DollarValue).toPrecision(2)) < '10.00'){
setnftclasses('No Class Determined')
}
} catch(e) {
console.log(e)
}
}((EthValue * DollarValue).toPrecision(2))等于楼价。
如您所知,基于地板价格,我希望UI显示NFT所属的类。但我有麻烦了。如果((EthValue * DollarValue).toPrecision(2))返回两位数的输出,则代码运行良好。
但是,如果它返回一个单个数字的输出,代码就不会返回正确的类。
这是一个截图

我认为它是从读第一个数字而不是前两个数字来宣布班级的。
我的问题是,在执行代码之前,我能做什么使代码在十进制之前读取这两个数字。
另外,还有另一个问题。在一个例子中测试时,地板价格是2+ETH,它显示了不正确的类。
这是截图

现在,如果我认为它实际上是从读取第一个数字来声明这个类,代码应该在这个屏幕截图中声明这个NFT 类C类而不是类D。我也不知道我做错了什么。
发布于 2022-10-08 02:20:12
"5.0" > "40.0" // true,因为它对字符串进行操作,并进行字典比较。
但
5.0 > 40.0 // false
在尝试对数字进行操作时,不应使用对字符串的转换。
const classMap = { A: 40, B: 30 };
const floor = EthValue * DollarValue;
const key = Object.entries(classMap).find(entry => floor>=entry[1])?.[0];
const className = key ? `Class ${key} NFT` : "No class determined";
setnftclasses(className);https://stackoverflow.com/questions/73993889
复制相似问题