diff --git a/src/app/vim-accounts/Resources-Overview/ResourcesOverviewComponent.ts b/src/app/vim-accounts/Resources-Overview/ResourcesOverviewComponent.ts
index 11d48d7..eb7c8bc 100644
--- a/src/app/vim-accounts/Resources-Overview/ResourcesOverviewComponent.ts
+++ b/src/app/vim-accounts/Resources-Overview/ResourcesOverviewComponent.ts
@@ -62,6 +62,9 @@
     @Input() public resourcesData: VimAccountDetails;
     /** Resources data for generating chart @public */
     public chartData: RESOURCESDATA[] = [];
+    /** Count of decimalPoints @private */
+    // eslint-disable-next-line @typescript-eslint/no-magic-numbers
+    private decimalPoints: number = 2;
     constructor(injector: Injector) {
         this.injector = injector;
         this.translateService = this.injector.get(TranslateService);
@@ -115,9 +118,9 @@
             let usedColor: string = RANGECOLOR.used;
             // eslint-disable-next-line security/detect-object-injection
             const getValuesUsedFree: number[] = Object.values(compute[key]);
-            const total: number = key === keyValidate ? getValuesUsedFree[0] / CONSTANTNUMBER.oneGB : getValuesUsedFree[0];
-            const used: number = key === keyValidate ? getValuesUsedFree[1] / CONSTANTNUMBER.oneGB : getValuesUsedFree[1];
-            const remaining: number = total - used;
+            const total: number = key === keyValidate ? Number((getValuesUsedFree[0] / CONSTANTNUMBER.oneGB).toFixed(this.decimalPoints)) : Number((getValuesUsedFree[0]).toFixed(this.decimalPoints));
+            const used: number = key === keyValidate ? Number((getValuesUsedFree[1] / CONSTANTNUMBER.oneGB).toFixed(this.decimalPoints)) : Number((getValuesUsedFree[1]).toFixed(this.decimalPoints));
+            const remaining: number = Number((total - used).toFixed(this.decimalPoints));
             const usedPercentage: number = (used / total) * range.percentage;
             if (usedPercentage >= range.nearlyFull && usedPercentage < range.full) {
                 usedColor = RANGECOLOR.nearlyfull;
@@ -125,7 +128,7 @@
             if (usedPercentage === range.full) {
                 usedColor = RANGECOLOR.full;
             }
-            getData.push(this.generateChartData(key, { total, used, remaining }, [usedColor, '#b9bcc3'] ));
+            getData.push(this.generateChartData(key, { total, used, remaining }, [usedColor, '#b9bcc3']));
         });
         return getData;
     }
@@ -140,8 +143,10 @@
             // eslint-disable-next-line security/detect-object-injection
             title: CONFIGRESOURCESTITLE[setTitle],
             values: this.generateChartDataValues(setValues.total, setValues.used, setValues.remaining),
-            data: [{data: [setValues.used, setValues.remaining], backgroundColor: setColor,
-                 hoverBackgroundColor: setColor, hoverBorderColor: setColor}]
+            data: [{
+                data: [setValues.used, setValues.remaining], backgroundColor: setColor,
+                hoverBackgroundColor: setColor, hoverBorderColor: setColor
+            }]
         };
     }
     /**
