diff --git a/python/ray/dashboard/client/src/common/formatUtils.ts b/python/ray/dashboard/client/src/common/formatUtils.ts
index 582655dce..9518637b5 100644
--- a/python/ray/dashboard/client/src/common/formatUtils.ts
+++ b/python/ray/dashboard/client/src/common/formatUtils.ts
@@ -30,3 +30,18 @@ export const formatDuration = (durationInSeconds: number) => {
`${pad(durationSeconds)}s`,
].join(" ");
};
+
+export const formatValue = (rawFloat: number) => {
+ try {
+ const decimals = rawFloat.toString().split(".")[1].length || 0;
+ if (decimals <= 3) {
+ return rawFloat.toString();
+ } // Few decimals
+ if (Math.abs(rawFloat.valueOf()) >= 1.0) {
+ return rawFloat.toPrecision(5);
+ } // Values >= 1
+ return rawFloat.toExponential(); // Values in (-1; 1)
+ } catch (e) {
+ return rawFloat.toString();
+ }
+};
diff --git a/python/ray/dashboard/client/src/pages/dashboard/tune/TuneTable.tsx b/python/ray/dashboard/client/src/pages/dashboard/tune/TuneTable.tsx
index 7a0479bba..ec2874342 100644
--- a/python/ray/dashboard/client/src/pages/dashboard/tune/TuneTable.tsx
+++ b/python/ray/dashboard/client/src/pages/dashboard/tune/TuneTable.tsx
@@ -21,6 +21,7 @@ import React from "react";
import { connect } from "react-redux";
import { TuneTrial } from "../../../api";
import DialogWithTitle from "../../../common/DialogWithTitle";
+import { formatValue } from "../../../common/formatUtils";
import NumberedLines from "../../../common/NumberedLines";
import { StoreState } from "../../../store";
import { dashboardActions } from "../state";
@@ -387,7 +388,9 @@ class TuneTable extends React.Component<
{viewableParams.map((value, index) => (
- {trial["params"][value]}
+ {typeof trial["params"][value] === "number"
+ ? formatValue(Number(trial["params"][value]))
+ : trial["params"][value]}
))}
@@ -396,7 +399,9 @@ class TuneTable extends React.Component<
{trial["metrics"] &&
viewableMetrics.map((value, index) => (
- {trial["metrics"][value]}
+ {typeof trial["metrics"][value] === "number"
+ ? formatValue(Number(trial["metrics"][value]))
+ : trial["metrics"][value]}
))}
diff --git a/python/ray/dashboard/dashboard.py b/python/ray/dashboard/dashboard.py
index 6a3c10005..d2a84d5b3 100644
--- a/python/ray/dashboard/dashboard.py
+++ b/python/ray/dashboard/dashboard.py
@@ -875,7 +875,7 @@ class TuneCollector(threading.Thread):
# round all floats
for key in float_keys:
- details[key] = round(details[key], 3)
+ details[key] = round(details[key], 12)
# group together config attributes
for key in config_keys: