2

机器人如何将带有“e”(3e6)的数字转换为完整的数字(3,000,000)?

这是一个例子:

用户: !捐赠添加@USER2 3e6

BOT: ✔️在@USER2 的捐款中增加了3,000,000个硬币。

const db = require("quick.db");

module.exports = {
   
        name: "donation",
        aliases: ["dono", "donate"],
        category: "donation tracker",
        description: "Adds/Removes money to/from a user",
        usage: "donation add/remove @user <Amount>",
        accessableby: "Moderators"
    ,
    run: async (bot, message, args) => {
        if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("❌ You Do Not Have Permission to do this action! - [MANAGE_MESSAGES]");
        if (!args[1]) return message.channel.send(' ```_donation add @User <Amount>\n            ^^^^\nThis argument is missing.``` ')
      if (args[0] == 'add') {

        let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.guild.members.cache.find(r => r.user.username.toLowerCase() === args[0].toLocaleLowerCase()) || message.guild.members.cache.find(r => r.displayName.toLowerCase() === args[0].toLocaleLowerCase());
        if (!user) return message.channel.send(" ```_donation add @User <Amount>\n                ^^^^^\nThis argument is missing or invalid``` ")
        if (!args[2]) return message.channel.send(" ```_donation add @User <Amount>\n                       ^^^^^^\nThis argument is missing.``` ")
        if (isNaN(args[2])) return message.channel.send(' ```_donation add @User <Amount>\n                       ^^^^^^\nThis argument is invalid.``` ');
        db.add(`money_${user.id}`, args[2])
        let bal = db.fetch(`money_${user.id}`)

        let moneyEmbed = new MessageEmbed()
            .setColor("GREEN")
            .setDescription(`<a:orion_done:855857744590536764> Added **${args[2]}** coins to ${args[1]}'s donations.`);
        message.channel.send(moneyEmbed)
      }
            if (args[0] == 'remove') {
        let user2 = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.guild.members.cache.find(r => r.user.username.toLowerCase() === args[0].toLocaleLowerCase()) || message.guild.members.cache.find(r => r.displayName.toLowerCase() === args[0].toLocaleLowerCase());
        if (!user2) return message.channel.send(" ```_donation add @User <Amount>\n                ^^^^^\nThis argument is missing or invalid``` ")
        if (!args[2]) return message.channel.send(" ```_donation add @User <Amount>\n                       ^^^^^^\nThis argument is missing.``` ")
        if (isNaN(args[2])) return message.channel.send(' ```_donation add @User <Amount>\n                       ^^^^^^\nThis argument is invalid.``` ');
        db.subtract(`money_${user2.id}`, args[2])
        let bal = db.fetch(`money_${user2.id}`)

        let moneyEmbed = new MessageEmbed()
            .setColor("RED")
            .setDescription(`<a:verifiedorange:838473291646894151> Removed **${args[2]}** coins from ${args[1]}'s donations.`);
        message.channel.send(moneyEmbed)
            }

    }
}

谢谢。

4

2 回答 2

1

一个简单的解析函数

function parse(num) {
    if (typeof num !== 'string') throw new TypeError('Parse parameters must be a string');
    if (num.includes('e')) {
        const arr = num.split('e');
        const power = parseInt(arr[1]);
        const base = parseInt(arr[0]);
        const o = base * Math.pow(10, power);
        return o;
    }
}
console.log(parse('2e5')); // returns 200000 
于 2021-06-19T20:52:37.387 回答
0

只需使用parseFloat

parseFloat(1) //1
parseFloat('1') //1
parseFloat('lol') //NaN
parseFloat('3e6') //3000000
parseFloat('1.2e2') //120
parseFloat(1.2e2) //120
parseFloat('1.2') //1.2
parseFloat(1.2) //1.2
于 2021-06-19T18:45:27.327 回答