diff --git a/meta/recipes-devtools/tcltk/tcl/run-ptest b/meta/recipes-devtools/tcltk/tcl/run-ptest
index 18e03716e3..6991873978 100644
--- a/meta/recipes-devtools/tcltk/tcl/run-ptest
+++ b/meta/recipes-devtools/tcltk/tcl/run-ptest
@@ -38,6 +38,11 @@ SKIP="$SKIP httpProxy-\*"
 SKIP="$SKIP mutex-condition-\*"
 # Timer-related tests are going to be fragile (16324)
 SKIP="$SKIP timer-\*"
+# RISC-V widens a negative float NaN to the positive canonical NaN, so the
+# sign check fails: https://core.tcl-lang.org/tcl/tktview/bf029ced86
+case "$(uname -m)" in
+riscv*) SKIP="$SKIP binary-40.3" ;;
+esac
 
 # Run all tests in tests/*.test unless tests are specified as arguments
 TESTS=${*:-tests/*.test}
diff --git a/meta/recipes-devtools/tcltk8/tcl8/run-ptest b/meta/recipes-devtools/tcltk8/tcl8/run-ptest
index 40666ef851..aa0959f013 100644
--- a/meta/recipes-devtools/tcltk8/tcl8/run-ptest
+++ b/meta/recipes-devtools/tcltk8/tcl8/run-ptest
@@ -36,6 +36,11 @@ SKIP="$SKIP http11-\*"
 SKIP="$SKIP httpProxy-\*"
 # Timer-related tests are going to be fragile (16324)
 SKIP="$SKIP timer-\*"
+# RISC-V widens a negative float NaN to the positive canonical NaN, so the
+# sign check fails: https://core.tcl-lang.org/tcl/tktview/bf029ced86
+case "$(uname -m)" in
+riscv*) SKIP="$SKIP binary-40.3" ;;
+esac
 
 # Run all tests in tests/*.test unless tests are specified as arguments
 TESTS=${*:-tests/*.test}
