Improve floating point number formatting

This commit is contained in:
nea
2023-06-02 02:42:42 +02:00
parent 3d76538cef
commit add5eb6a4a
4 changed files with 30 additions and 18 deletions

View File

@@ -21,25 +21,16 @@ package moe.nea.firmament.commands
import com.mojang.brigadier.CommandDispatcher
import com.mojang.brigadier.arguments.StringArgumentType.getString
import com.mojang.brigadier.arguments.StringArgumentType.string
import io.github.cottonmc.cotton.gui.client.CottonClientScreen
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.parameter
import io.ktor.http.URLProtocol
import io.ktor.http.path
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource
import kotlinx.coroutines.launch
import net.minecraft.text.Text
import moe.nea.firmament.Firmament
import moe.nea.firmament.apis.Profiles
import moe.nea.firmament.features.world.FairySouls
import moe.nea.firmament.gui.config.AllConfigsGui
import moe.nea.firmament.gui.profileviewer.ProfileViewer
import moe.nea.firmament.repo.ItemCostData
import moe.nea.firmament.repo.RepoManager
import moe.nea.firmament.util.FirmFormatters
import moe.nea.firmament.util.MC
import moe.nea.firmament.util.SBData
import moe.nea.firmament.util.ScreenUtil
import moe.nea.firmament.util.SkyblockId
import moe.nea.firmament.util.unformattedString
@@ -87,7 +78,7 @@ fun firmamentCommand() = literal("firmament") {
source.sendFeedback(
Text.translatable(
"firmament.price.bazaar.buy.price",
bazaarData.quickStatus.buyPrice
FirmFormatters.toString(bazaarData.quickStatus.buyPrice, 1)
)
)
source.sendFeedback(
@@ -99,7 +90,7 @@ fun firmamentCommand() = literal("firmament") {
source.sendFeedback(
Text.translatable(
"firmament.price.bazaar.sell.price",
bazaarData.quickStatus.sellPrice
FirmFormatters.toString(bazaarData.quickStatus.sellPrice, 1)
)
)
source.sendFeedback(
@@ -111,7 +102,12 @@ fun firmamentCommand() = literal("firmament") {
}
val lowestBin = ItemCostData.lowestBin[itemName]
if (lowestBin != null) {
source.sendFeedback(Text.translatable("firmament.price.lowestbin", lowestBin))
source.sendFeedback(
Text.translatable(
"firmament.price.lowestbin",
FirmFormatters.toString(lowestBin, 1)
)
)
}
}
}

View File

@@ -14,6 +14,7 @@ import net.minecraft.util.Formatting
import moe.nea.firmament.apis.Skill
import moe.nea.firmament.gui.WBar
import moe.nea.firmament.repo.RepoManager
import moe.nea.firmament.util.FirmFormatters
import moe.nea.firmament.util.toShedaniel
object SkillPage : ProfilePage {
@@ -45,7 +46,7 @@ object SkillPage : ProfilePage {
) {
override fun addTooltip(tooltip: TooltipBuilder) {
tooltip.add(Text.literal("$level/$maxLevel"))
tooltip.add(Text.translatable("firmament.pv.skills.total", exp))
tooltip.add(Text.translatable("firmament.pv.skills.total", FirmFormatters.toString(exp, 1)))
}
}, 4, i + 1, 4, 1)
}

View File

@@ -0,0 +1,15 @@
package moe.nea.firmament.util
import com.google.common.math.IntMath.pow
import kotlin.math.absoluteValue
object FirmFormatters {
fun toString(double: Double, fractionalDigits: Int): String {
val long = double.toLong()
val δ = (double - long).absoluteValue
val μ = pow(10, fractionalDigits)
val digits = (μ * δ).toInt().toString().padStart(fractionalDigits, '0').trimEnd('0')
return long.toString() + (if (digits.isEmpty()) "" else ".$digits")
}
}

View File

@@ -6,11 +6,11 @@
"firmament.price": "Checking price for %s",
"firmament.price.bazaar": "Bazaar stats:",
"firmament.price.bazaar.productid": "Stock id: %s",
"firmament.price.bazaar.buy.price": "Buy Price: %.1f",
"firmament.price.bazaar.buy.price": "Buy Price: %s",
"firmament.price.bazaar.buy.order": "Buy orders: %d",
"firmament.price.bazaar.sell.price": "Sell Price: %.1f",
"firmament.price.bazaar.sell.price": "Sell Price: %s",
"firmament.price.bazaar.sell.order": "Sell orders: %d",
"firmament.price.lowestbin": "Lowest BIN: %.1f",
"firmament.price.lowestbin": "Lowest BIN: %s",
"firmament.repo.reload.network": "Trying to redownload the repository",
"firmament.repo.reload.disk": "Reloading repository from disk. This may lag a bit.",
"firmament.repo.cache": "Recaching items",
@@ -53,6 +53,6 @@
"firmament.pv.skills.combat": "Combat",
"firmament.pv.skills.social": "Social",
"firmament.pv.skills.enchanting": "Enchanting",
"firmament.pv.skills.total": "Total Exp: %.1f",
"firmament.pv.skills.total": "Total Exp: %s",
"firmament.pv.lookingup": "Looking up %s"
}