diff --git a/proxmox/config_qemu_disk.go b/proxmox/config_qemu_disk.go
index 8985617f..01574416 100644
--- a/proxmox/config_qemu_disk.go
+++ b/proxmox/config_qemu_disk.go
@@ -299,17 +299,17 @@ func (disk qemuDisk) mapToApiValues(vmID, LinkedVmId uint, currentStorage string
 	}
 
 	if disk.Bandwidth.MBps.ReadLimit.Concurrent != 0 {
-		settings = settings + fmt.Sprintf(",mbps_rd=%.2f", disk.Bandwidth.MBps.ReadLimit.Concurrent)
+		settings = settings + ",mbps_rd=" + floatToTrimmedString(float64(disk.Bandwidth.MBps.ReadLimit.Concurrent), 2)
 	}
 	if disk.Bandwidth.MBps.ReadLimit.Burst != 0 {
-		settings = settings + fmt.Sprintf(",mbps_rd_max=%.2f", disk.Bandwidth.MBps.ReadLimit.Burst)
+		settings = settings + ",mbps_rd_max=" + floatToTrimmedString(float64(disk.Bandwidth.MBps.ReadLimit.Burst), 2)
 	}
 
 	if disk.Bandwidth.MBps.WriteLimit.Concurrent != 0 {
-		settings = settings + fmt.Sprintf(",mbps_wr=%.2f", disk.Bandwidth.MBps.WriteLimit.Concurrent)
+		settings = settings + ",mbps_wr=" + floatToTrimmedString(float64(disk.Bandwidth.MBps.WriteLimit.Concurrent), 2)
 	}
 	if disk.Bandwidth.MBps.WriteLimit.Burst != 0 {
-		settings = settings + fmt.Sprintf(",mbps_wr_max=%.2f", disk.Bandwidth.MBps.WriteLimit.Burst)
+		settings = settings + ",mbps_wr_max=" + floatToTrimmedString(float64(disk.Bandwidth.MBps.WriteLimit.Burst), 2)
 	}
 
 	if !disk.Replicate {
diff --git a/proxmox/config_qemu_test.go b/proxmox/config_qemu_test.go
index 339c747e..e4f3edd6 100644
--- a/proxmox/config_qemu_test.go
+++ b/proxmox/config_qemu_test.go
@@ -14,7 +14,7 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 	float10 := QemuDiskBandwidthMBpsLimitConcurrent(10.3)
 	float45 := QemuDiskBandwidthMBpsLimitConcurrent(45.23)
 	float79 := QemuDiskBandwidthMBpsLimitBurst(79.23)
-	float99 := QemuDiskBandwidthMBpsLimitBurst(99.2)
+	float99 := QemuDiskBandwidthMBpsLimitBurst(99.20)
 	uint1 := uint(1)
 	uint23 := QemuDiskBandwidthIopsLimitConcurrent(23)
 	uint34 := QemuDiskBandwidthIopsLimitConcurrent(34)
@@ -77,7 +77,7 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 				Storage:       "Test",
 				WorldWideName: "0x5000D31000C9876F",
 			}}}}},
-			output: map[string]interface{}{"ide0": "Test:32,aio=native,cache=directsync,discard=on,format=raw,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,mbps_rd=10.30,mbps_rd_max=99.20,mbps_wr=45.23,mbps_wr_max=79.23,serial=558485ef-478,ssd=1,wwn=0x5000D31000C9876F"},
+			output: map[string]interface{}{"ide0": "Test:32,aio=native,cache=directsync,discard=on,format=raw,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,mbps_rd=10.3,mbps_rd_max=99.2,mbps_wr=45.23,mbps_wr_max=79.23,serial=558485ef-478,ssd=1,wwn=0x5000D31000C9876F"},
 		},
 		{name: "Create Disks.Ide.Disk_X.Disk.AsyncIO",
 			config: &ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Disk: &QemuIdeDisk{AsyncIO: QemuDiskAsyncIO_Native}}}}},
@@ -137,11 +137,11 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 		},
 		{name: "Create Disks.Ide.Disk_X.Disk.Bandwidth.MBps.ReadLimit.Burst",
 			config: &ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: float99}}}}}}}},
-			output: map[string]interface{}{"ide2": ",backup=0,mbps_rd_max=99.20,replicate=0"},
+			output: map[string]interface{}{"ide2": ",backup=0,mbps_rd_max=99.2,replicate=0"},
 		},
 		{name: "Create Disks.Ide.Disk_X.Disk.Bandwidth.MBps.ReadLimit.Concurrent",
 			config: &ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: float10}}}}}}}},
-			output: map[string]interface{}{"ide3": ",backup=0,mbps_rd=10.30,replicate=0"},
+			output: map[string]interface{}{"ide3": ",backup=0,mbps_rd=10.3,replicate=0"},
 		},
 		{name: "Create Disks.Ide.Disk_X.Disk.Bandwidth.MBps.WriteLimit",
 			config: &ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{}}}}}}}},
@@ -214,7 +214,7 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 				Serial:        "test-serial_757465-gdg",
 				WorldWideName: "0x500CBA2000D76543",
 			}}}}},
-			output: map[string]interface{}{"ide0": "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi8,aio=threads,cache=unsafe,discard=on,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,mbps_rd=10.30,mbps_rd_max=99.20,mbps_wr=45.23,mbps_wr_max=79.23,serial=test-serial_757465-gdg,ssd=1,wwn=0x500CBA2000D76543"},
+			output: map[string]interface{}{"ide0": "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi8,aio=threads,cache=unsafe,discard=on,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,mbps_rd=10.3,mbps_rd_max=99.2,mbps_wr=45.23,mbps_wr_max=79.23,serial=test-serial_757465-gdg,ssd=1,wwn=0x500CBA2000D76543"},
 		},
 		{name: "Create Disks.Ide.Disk_X.Passthrough.AsyncIO",
 			config: &ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{AsyncIO: QemuDiskAsyncIO_Threads}}}}},
@@ -274,11 +274,11 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 		},
 		{name: "Create Disks.Ide.Disk_X.Passthrough.Bandwidth.MBps.ReadLimit.Burst",
 			config: &ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: float99}}}}}}}},
-			output: map[string]interface{}{"ide2": ",backup=0,mbps_rd_max=99.20,replicate=0"},
+			output: map[string]interface{}{"ide2": ",backup=0,mbps_rd_max=99.2,replicate=0"},
 		},
 		{name: "Create Disks.Ide.Disk_X.Passthrough.Bandwidth.MBps.ReadLimit.Concurrent",
 			config: &ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: float10}}}}}}}},
-			output: map[string]interface{}{"ide3": ",backup=0,mbps_rd=10.30,replicate=0"},
+			output: map[string]interface{}{"ide3": ",backup=0,mbps_rd=10.3,replicate=0"},
 		},
 		{name: "Create Disks.Ide.Disk_X.Passthrough.Bandwidth.MBps.WriteLimit",
 			config: &ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{}}}}}}}},
@@ -362,7 +362,7 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 				Storage:       "Test",
 				WorldWideName: "0x5009876000A321DC",
 			}}}}},
-			output: map[string]interface{}{"sata0": "Test:32,aio=native,cache=unsafe,discard=on,format=qcow2,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,mbps_rd=10.30,mbps_rd_max=99.20,mbps_wr=45.23,mbps_wr_max=79.23,serial=ab_C-12_3,ssd=1,wwn=0x5009876000A321DC"},
+			output: map[string]interface{}{"sata0": "Test:32,aio=native,cache=unsafe,discard=on,format=qcow2,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,mbps_rd=10.3,mbps_rd_max=99.2,mbps_wr=45.23,mbps_wr_max=79.23,serial=ab_C-12_3,ssd=1,wwn=0x5009876000A321DC"},
 		},
 		{name: "Create Disks.Sata.Disk_X.Disk.AsyncIO",
 			config: &ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{AsyncIO: QemuDiskAsyncIO_Native}}}}},
@@ -422,11 +422,11 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 		},
 		{name: "Create Disks.Sata.Disk_X.Disk.Bandwidth.MBps.ReadLimit.Burst",
 			config: &ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_5: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: float99}}}}}}}},
-			output: map[string]interface{}{"sata5": ",backup=0,mbps_rd_max=99.20,replicate=0"},
+			output: map[string]interface{}{"sata5": ",backup=0,mbps_rd_max=99.2,replicate=0"},
 		},
 		{name: "Create Disks.Sata.Disk_X.Disk.Bandwidth.MBps.ReadLimit.Concurrent",
 			config: &ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: float10}}}}}}}},
-			output: map[string]interface{}{"sata0": ",backup=0,mbps_rd=10.30,replicate=0"},
+			output: map[string]interface{}{"sata0": ",backup=0,mbps_rd=10.3,replicate=0"},
 		},
 		{name: "Create Disks.Sata.Disk_X.Disk.Bandwidth.MBps.WriteLimit",
 			config: &ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{}}}}}}}},
@@ -499,7 +499,7 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 				Serial:        "test-serial_757465-gdg",
 				WorldWideName: "0x5007892000C4321A",
 			}}}}},
-			output: map[string]interface{}{"sata0": "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi8,aio=threads,cache=unsafe,discard=on,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,mbps_rd=10.30,mbps_rd_max=99.20,mbps_wr=45.23,mbps_wr_max=79.23,serial=test-serial_757465-gdg,ssd=1,wwn=0x5007892000C4321A"},
+			output: map[string]interface{}{"sata0": "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi8,aio=threads,cache=unsafe,discard=on,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,mbps_rd=10.3,mbps_rd_max=99.2,mbps_wr=45.23,mbps_wr_max=79.23,serial=test-serial_757465-gdg,ssd=1,wwn=0x5007892000C4321A"},
 		},
 		{name: "Create Disks.Sata.Disk_X.Passthrough.AsyncIO",
 			config: &ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Passthrough: &QemuSataPassthrough{AsyncIO: QemuDiskAsyncIO_Threads}}}}},
@@ -559,11 +559,11 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 		},
 		{name: "Create Disks.Sata.Disk_X.Passthrough.Bandwidth.MBps.ReadLimit.Burst",
 			config: &ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: float99}}}}}}}},
-			output: map[string]interface{}{"sata0": ",backup=0,mbps_rd_max=99.20,replicate=0"},
+			output: map[string]interface{}{"sata0": ",backup=0,mbps_rd_max=99.2,replicate=0"},
 		},
 		{name: "Create Disks.Sata.Disk_X.Passthrough.Bandwidth.MBps.ReadLimit.Concurrent",
 			config: &ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: float10}}}}}}}},
-			output: map[string]interface{}{"sata1": ",backup=0,mbps_rd=10.30,replicate=0"},
+			output: map[string]interface{}{"sata1": ",backup=0,mbps_rd=10.3,replicate=0"},
 		},
 		{name: "Create Disks.Sata.Disk_X.Passthrough.Bandwidth.MBps.WriteLimit",
 			config: &ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{}}}}}}}},
@@ -649,7 +649,7 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 				Storage:       "Test",
 				WorldWideName: "0x500D567800BAC321",
 			}}}}},
-			output: map[string]interface{}{"scsi0": "Test:32,aio=native,cache=directsync,discard=on,format=raw,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,iothread=1,mbps_rd=10.30,mbps_rd_max=99.20,mbps_wr=45.23,mbps_wr_max=79.23,ro=1,serial=558485ef-478,ssd=1,wwn=0x500D567800BAC321"},
+			output: map[string]interface{}{"scsi0": "Test:32,aio=native,cache=directsync,discard=on,format=raw,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,iothread=1,mbps_rd=10.3,mbps_rd_max=99.2,mbps_wr=45.23,mbps_wr_max=79.23,ro=1,serial=558485ef-478,ssd=1,wwn=0x500D567800BAC321"},
 		},
 		{name: "Create Disks.Scsi.Disk_X.Disk.AsyncIO",
 			config: &ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{Disk: &QemuScsiDisk{AsyncIO: QemuDiskAsyncIO_Native}}}}},
@@ -709,11 +709,11 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 		},
 		{name: "Create Disks.Scsi.Disk_X.Disk.Bandwidth.MBps.ReadLimit.Burst",
 			config: &ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_6: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: float99}}}}}}}},
-			output: map[string]interface{}{"scsi6": ",backup=0,mbps_rd_max=99.20,replicate=0"},
+			output: map[string]interface{}{"scsi6": ",backup=0,mbps_rd_max=99.2,replicate=0"},
 		},
 		{name: "Create Disks.Scsi.Disk_X.Disk.Bandwidth.MBps.ReadLimit.Concurrent",
 			config: &ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_7: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: float10}}}}}}}},
-			output: map[string]interface{}{"scsi7": ",backup=0,mbps_rd=10.30,replicate=0"},
+			output: map[string]interface{}{"scsi7": ",backup=0,mbps_rd=10.3,replicate=0"},
 		},
 		{name: "Create Disks.Scsi.Disk_X.Disk.Bandwidth.MBps.WriteLimit",
 			config: &ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_8: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{}}}}}}}},
@@ -796,7 +796,7 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 				Serial:        "test-serial_757465-gdg",
 				WorldWideName: "0x500BCA3000F09876",
 			}}}}},
-			output: map[string]interface{}{"scsi0": "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi8,aio=threads,cache=unsafe,discard=on,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,iothread=1,mbps_rd=10.30,mbps_rd_max=99.20,mbps_wr=45.23,mbps_wr_max=79.23,ro=1,serial=test-serial_757465-gdg,ssd=1,wwn=0x500BCA3000F09876"},
+			output: map[string]interface{}{"scsi0": "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi8,aio=threads,cache=unsafe,discard=on,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,iothread=1,mbps_rd=10.3,mbps_rd_max=99.2,mbps_wr=45.23,mbps_wr_max=79.23,ro=1,serial=test-serial_757465-gdg,ssd=1,wwn=0x500BCA3000F09876"},
 		},
 		{name: "Create Disks.Scsi.Disk_X.Passthrough.AsyncIO",
 			config: &ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{AsyncIO: QemuDiskAsyncIO_Threads}}}}},
@@ -856,11 +856,11 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 		},
 		{name: "Create Disks.Scsi.Disk_X.Passthrough.Bandwidth.MBps.ReadLimit.Burst",
 			config: &ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_6: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: float99}}}}}}}},
-			output: map[string]interface{}{"scsi6": ",backup=0,mbps_rd_max=99.20,replicate=0"},
+			output: map[string]interface{}{"scsi6": ",backup=0,mbps_rd_max=99.2,replicate=0"},
 		},
 		{name: "Create Disks.Scsi.Disk_X.Passthrough.Bandwidth.MBps.ReadLimit.Concurrent",
 			config: &ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_7: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: float10}}}}}}}},
-			output: map[string]interface{}{"scsi7": ",backup=0,mbps_rd=10.30,replicate=0"},
+			output: map[string]interface{}{"scsi7": ",backup=0,mbps_rd=10.3,replicate=0"},
 		},
 		{name: "Create Disks.Scsi.Disk_X.Passthrough.Bandwidth.MBps.WriteLimit",
 			config: &ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_8: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{}}}}}}}},
@@ -953,7 +953,7 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 				Storage:       "Test",
 				WorldWideName: "0x500A7B0800F345D2",
 			}}}}},
-			output: map[string]interface{}{"virtio0": "Test:32,aio=native,cache=directsync,discard=on,format=raw,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,iothread=1,mbps_rd=10.30,mbps_rd_max=99.20,mbps_wr=45.23,mbps_wr_max=79.23,ro=1,serial=558485ef-478,wwn=0x500A7B0800F345D2"},
+			output: map[string]interface{}{"virtio0": "Test:32,aio=native,cache=directsync,discard=on,format=raw,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,iothread=1,mbps_rd=10.3,mbps_rd_max=99.2,mbps_wr=45.23,mbps_wr_max=79.23,ro=1,serial=558485ef-478,wwn=0x500A7B0800F345D2"},
 		},
 		{name: "Create Disks.VirtIO.Disk_X.Disk.AsyncIO",
 			config: &ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{AsyncIO: QemuDiskAsyncIO_Native}}}}},
@@ -1103,7 +1103,7 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 				Serial:        "test-serial_757465-gdg",
 				WorldWideName: "0x500C329500A1EFAB",
 			}}}}},
-			output: map[string]interface{}{"virtio0": "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi8,aio=threads,cache=unsafe,discard=on,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,iothread=1,mbps_rd=10.30,mbps_rd_max=99.20,mbps_wr=45.23,mbps_wr_max=79.23,ro=1,serial=test-serial_757465-gdg,wwn=0x500C329500A1EFAB"},
+			output: map[string]interface{}{"virtio0": "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi8,aio=threads,cache=unsafe,discard=on,iops_rd=34,iops_rd_max=78,iops_rd_max_length=3,iops_wr=23,iops_wr_max=89,iops_wr_max_length=4,iothread=1,mbps_rd=10.3,mbps_rd_max=99.2,mbps_wr=45.23,mbps_wr_max=79.23,ro=1,serial=test-serial_757465-gdg,wwn=0x500C329500A1EFAB"},
 		},
 		{name: "Create Disks.VirtIO.Disk_X.Passthrough.AsyncIO",
 			config: &ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{AsyncIO: QemuDiskAsyncIO_Threads}}}}},
@@ -1163,11 +1163,11 @@ func Test_ConfigQemu_mapToApiValues(t *testing.T) {
 		},
 		{name: "Create Disks.VirtIO.Disk_X.Passthrough.Bandwidth.MBps.ReadLimit.Burst",
 			config: &ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_6: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: float99}}}}}}}},
-			output: map[string]interface{}{"virtio6": ",backup=0,mbps_rd_max=99.20,replicate=0"},
+			output: map[string]interface{}{"virtio6": ",backup=0,mbps_rd_max=99.2,replicate=0"},
 		},
 		{name: "Create Disks.VirtIO.Disk_X.Passthrough.Bandwidth.MBps.ReadLimit.Concurrent",
 			config: &ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_7: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: float10}}}}}}}},
-			output: map[string]interface{}{"virtio7": ",backup=0,mbps_rd=10.30,replicate=0"},
+			output: map[string]interface{}{"virtio7": ",backup=0,mbps_rd=10.3,replicate=0"},
 		},
 		{name: "Create Disks.VirtIO.Disk_X.Passthrough.Bandwidth.MBps.WriteLimit",
 			config: &ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_8: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{}}}}}}}},
diff --git a/proxmox/util.go b/proxmox/util.go
index 379dbc57..e39fefe8 100644
--- a/proxmox/util.go
+++ b/proxmox/util.go
@@ -225,6 +225,15 @@ func keyExists(array []interface{}, key string) (existence bool) {
 	return false
 }
 
+// converts a float to a string with x number of decimals, and trims trailing zeros and the decimal point
+func floatToTrimmedString(f float64, maxDecimals uint8) (s string) {
+	s = strings.TrimRight(strconv.FormatFloat(f, 'f', int(maxDecimals), 64), "0")
+	if s[len(s)-1:] == "." {
+		return s[:len(s)-1]
+	}
+	return
+}
+
 func splitStringOfSettings(settings string) map[string]interface{} {
 	settingValuePairs := strings.Split(settings, ",")
 	settingMap := map[string]interface{}{}
diff --git a/proxmox/util_test.go b/proxmox/util_test.go
index 1ac4211c..065f77c1 100644
--- a/proxmox/util_test.go
+++ b/proxmox/util_test.go
@@ -52,6 +52,44 @@ func Test_keyExists(t *testing.T) {
 	}
 }
 
+func Test_floatToTrimmedString(t *testing.T) {
+	type testStruct struct {
+		number   float64
+		decimals uint8
+	}
+	tests := []struct {
+		name   string
+		input  testStruct
+		output string
+	}{
+		{name: "float64",
+			input:  testStruct{number: 1.23456789, decimals: 8},
+			output: "1.23456789",
+		},
+		{name: "float32",
+			input:  testStruct{number: float64(float32(1.23456789)), decimals: 8},
+			output: "1.23456788",
+		},
+		{name: "no decimal trimmed",
+			input:  testStruct{number: 1.0000000, decimals: 10},
+			output: "1",
+		},
+		{name: "one decimal trimmed",
+			input:  testStruct{number: 10.3000000, decimals: 10},
+			output: "10.3",
+		},
+		{name: "tree decimal trimmed",
+			input:  testStruct{number: 45.73300000, decimals: 10},
+			output: "45.733",
+		},
+	}
+	for _, test := range tests {
+		t.Run(test.name, func(*testing.T) {
+			require.Equal(t, test.output, floatToTrimmedString(test.input.number, test.input.decimals), test.name)
+		})
+	}
+}
+
 func Test_splitStringOfSettings(t *testing.T) {
 	testData := []struct {
 		Input  string