diff --git a/meta/recipes-devtools/tcltk/tcl_9.0.4.bb b/meta/recipes-devtools/tcltk/tcl_9.0.4.bb
index 5166ef25112..e23bf3826b8 100644
--- a/meta/recipes-devtools/tcltk/tcl_9.0.4.bb
+++ b/meta/recipes-devtools/tcltk/tcl_9.0.4.bb
@@ -79,6 +79,10 @@ do_compile_ptest() {
 SKIPPED_TESTS = ""
 # Assumes locales other than provided by musl-locales
 SKIPPED_TESTS:append:libc-musl = " unixInit-3*"
+# 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
+SKIPPED_TESTS:append:riscv32 = " binary-40.3"
+SKIPPED_TESTS:append:riscv64 = " binary-40.3"
 
 do_install_ptest() {
 	cp ${B}/tcltest ${D}${PTEST_PATH}
diff --git a/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb b/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb
index 07f3ad4592d..5e296cc7e6d 100644
--- a/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb
+++ b/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb
@@ -83,6 +83,10 @@ do_compile_ptest() {
 SKIPPED_TESTS = ""
 # Assumes locales other than provided by musl-locales
 SKIPPED_TESTS:append:libc-musl = " unixInit-3*"
+# 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
+SKIPPED_TESTS:append:riscv32 = " binary-40.3"
+SKIPPED_TESTS:append:riscv64 = " binary-40.3"
 
 do_install_ptest() {
 	cp ${B}/tcltest ${D}${PTEST_PATH}
