diff --git a/.changeset/fix-progressbar-decimal-aria.md b/.changeset/fix-progressbar-decimal-aria.md
new file mode 100644
index 00000000000..665253ba4ca
--- /dev/null
+++ b/.changeset/fix-progressbar-decimal-aria.md
@@ -0,0 +1,5 @@
+---
+'@primer/react': patch
+---
+
+ProgressBar: Fix `aria-valuenow` rounding for decimal string progress values
diff --git a/packages/react/src/ProgressBar/ProgressBar.test.tsx b/packages/react/src/ProgressBar/ProgressBar.test.tsx
index 80abd803f46..72b31d35905 100644
--- a/packages/react/src/ProgressBar/ProgressBar.test.tsx
+++ b/packages/react/src/ProgressBar/ProgressBar.test.tsx
@@ -82,6 +82,14 @@ describe('ProgressBar', () => {
expect(getByRole('progressbar')).toHaveAttribute('aria-valuenow', '50')
})
+ it.each([33.8, '33.8'])('rounds decimal progress %j consistently for `aria-valuenow`', progress => {
+ const {getByRole} = render()
+ const progressBar = getByRole('progressbar')
+
+ expect(progressBar).toHaveAttribute('aria-valuenow', '34')
+ expect(progressBar.style.getPropertyValue('--progress-width')).toBe('33.8%')
+ })
+
it('applies `0` as a value for `aria-valuenow`', () => {
const {getByRole} = render()
diff --git a/packages/react/src/ProgressBar/ProgressBar.tsx b/packages/react/src/ProgressBar/ProgressBar.tsx
index 579779f8f5f..0825e0196eb 100644
--- a/packages/react/src/ProgressBar/ProgressBar.tsx
+++ b/packages/react/src/ProgressBar/ProgressBar.tsx
@@ -33,7 +33,7 @@ export const Item = forwardRef(
},
forwardRef,
) => {
- const progressAsNumber = typeof progress === 'string' ? parseInt(progress, 10) : progress
+ const progressAsNumber = typeof progress === 'string' ? parseFloat(progress) : progress
const ariaAttributes = {
'aria-valuenow':