mirror of
https://github.com/getsops/sops.git
synced 2026-02-05 12:45:21 +01:00
Improve formatting of floats.
Signed-off-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
@@ -82,7 +82,12 @@ func (store Store) stripCommentChar(comment string) string {
|
||||
func (store Store) valToString(v interface{}) string {
|
||||
switch v := v.(type) {
|
||||
case float64:
|
||||
return strconv.FormatFloat(v, 'f', 6, 64)
|
||||
result := strconv.FormatFloat(v, 'G', -1, 64)
|
||||
// If the result can be confused with an integer, make sure we have at least one decimal digit
|
||||
if !strings.ContainsRune(result, '.') && !strings.ContainsRune(result, 'E') {
|
||||
result = strconv.FormatFloat(v, 'f', 1, 64)
|
||||
}
|
||||
return result
|
||||
case bool:
|
||||
return strconv.FormatBool(v)
|
||||
case time.Time:
|
||||
|
||||
@@ -187,11 +187,15 @@ func TestUnmarshalMetadataFromNonSOPSFile(t *testing.T) {
|
||||
func TestValToString(t *testing.T) {
|
||||
store := Store{}
|
||||
assert.Equal(t, "1", store.valToString(1))
|
||||
assert.Equal(t, "1.000000", store.valToString(1.0))
|
||||
assert.Equal(t, "-20000000000.000000", store.valToString(-2e10))
|
||||
assert.Equal(t, "0.000000", store.valToString(2e-10))
|
||||
assert.Equal(t, "12345000000000000583883634749019137936624068583482471750845213260941541453980911162485633595979333632.000000", store.valToString(1.2345e100))
|
||||
assert.Equal(t, "0.000000", store.valToString(1.2345e-100))
|
||||
assert.Equal(t, "1.0", store.valToString(1.0))
|
||||
assert.Equal(t, "1.1", store.valToString(1.10))
|
||||
assert.Equal(t, "1.23", store.valToString(1.23))
|
||||
assert.Equal(t, "1.2345678901234567", store.valToString(1.234567890123456789))
|
||||
assert.Equal(t, "200000.0", store.valToString(2E5))
|
||||
assert.Equal(t, "-2E+10", store.valToString(-2E10))
|
||||
assert.Equal(t, "2E-10", store.valToString(2E-10))
|
||||
assert.Equal(t, "1.2345E+100", store.valToString(1.2345E100))
|
||||
assert.Equal(t, "1.2345E-100", store.valToString(1.2345E-100))
|
||||
assert.Equal(t, "true", store.valToString(true))
|
||||
assert.Equal(t, "false", store.valToString(false))
|
||||
ts, _ := time.Parse(time.RFC3339, "2025-01-02T03:04:05Z")
|
||||
|
||||
Reference in New Issue
Block a user