关于0.9999....=1的证明

本文探讨了0.9999....与1是否相等的问题,并通过几种直观的方法给出了肯定的答案。首先利用分数9/9的性质进行类比,再通过代数方法直接计算得出结论。最后,采用反证法严格证明了两个数间不存在其他数值,则这两数必相等。

    某日凌晨4点多,网友Superwyh发来短信说,他梦到了这样一个颇具启发性的问题:如果我们能够证明两个数之间不存在其它的数,这是否足以说明这两个数是相等的?正好当时我还没睡,稍微想了一下,发现这个命题是成立的,因为它的逆否命题显然成立。倘若两个数不相等,那它们之间一定能够插入其它的数(例如这两个数的算术平均值);反过来,如果两个数之间无法插入别的数,这两个数自然就应该相等了。
    这个命题是相当具有启发性的。或许有人会想,能不能用这一思路去证明两个数相等呢?
    关于两数是否相等的争论,最著名的就是那个关于0.9999....和1是否相等的问题了。这一问题理解起来简单,细想起来争议颇大,真可谓是一个全民化的数学争论,与著名的Monty Hall问题有得一拼。不了解极限概念的人可能会说,不管你在后面写多少个9,它都不能达到1的,量变和质变存在本质上的区别。因此,当高中数学课上老师明确指出0.9999....精确地等于1时,还是有不少人瞠目结舌,甚至高声反对。


    如何让不懂极限的人相信这一等式呢?这是一个有趣的话题。我们可以用类比法来说服这些“保守派”的人。注意到1/9等于0.1111....,2/9=0.2222....,一直到8/9=0.8888....,我们很容易联想到9/9应该等于0.9999....。但是,9/9等于1,这就说明了两个数是相等的。
    下面这个说法更具有说服力一些。令x=0.9999....,于是10x就等于9.9999....,两者相减可得9x=9,我们立即看出x实际上就等于1。
    有没有什么更加严格一些的证明呢?Superwyh在短信中提到,直觉上看,0.9999....和1之间似乎无法插入其它数字,这很能令人信服两个数是相等的。事实上,我们可以严格地说明不存在x使得0.9999.... < x < 1。倘若有某个x小于1,这说明1-x是一个正数,虽然它可能很小很小。比方说1-x=0.0000000001,那么就有0.9999.... > 0.99999999999 > x;不管1-x有多小,只需要比到x的第一个非0位,0.9999....就已经超过了x。这样看来,任何一个比1小的数,也一定小于0.9999....,因此1和0.9999....之间不存在第三个数。根据前面的结论,我们立即得到,1和0.9999....其实是同一个数。

利用上面的脚本得出来的结果:[root@localhost 20251007_152848]# cat sdb_randread_4k.log randread_4k: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=32 ... fio-3.21 Starting 16 processes randread_4k: (groupid=0, jobs=16): err= 0: pid=18763: Tue Oct 7 15:38:52 2025 read: IOPS=575, BW=2302KiB/s (2357kB/s)(1350MiB/600591msec) slat (usec): min=2, max=572028, avg=25734.14, stdev=38313.47 clat (msec): min=5, max=2494, avg=863.54, stdev=400.24 lat (msec): min=5, max=2602, avg=889.28, stdev=408.08 clat percentiles (msec): | 1.00th=[ 62], 5.00th=[ 209], 10.00th=[ 355], 20.00th=[ 523], | 30.00th=[ 634], 40.00th=[ 735], 50.00th=[ 835], 60.00th=[ 944], | 70.00th=[ 1070], 80.00th=[ 1217], 90.00th=[ 1418], 95.00th=[ 1552], | 99.00th=[ 1804], 99.50th=[ 1888], 99.90th=[ 2056], 99.95th=[ 2123], | 99.99th=[ 2299] bw ( KiB/s): min= 440, max= 6440, per=100.00%, avg=2303.98, stdev=55.47, samples=19174 iops : min= 110, max= 1610, avg=576.00, stdev=13.87, samples=19174 lat (msec) : 10=0.02%, 20=0.11%, 50=0.60%, 100=1.26%, 250=4.18% lat (msec) : 500=12.21%, 750=23.25%, 1000=23.04%, 2000=35.15%, >=2000=0.17% cpu : usr=0.01%, sys=0.03%, ctx=198299, majf=0, minf=750 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=99.9%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, >=64=0.0% issued rwts: total=345630,0,0,0 short=0,0,0,0 dropped=0,0,0,0 latency : target=0, window=0, percentile=100.00%, depth=32 Run status group 0 (all jobs): READ: bw=2302KiB/s (2357kB/s), 2302KiB/s-2302KiB/s (2357kB/s-2357kB/s), io=1350MiB (1416MB), run=600591-600591msec Disk stats (read/write): sdb: ios=345544/0, merge=25/0, ticks=151836759/0, in_queue=151664071, util=100.00% [root@localhost 20251007_152848]# cat sdb_randwrite_4k.log randwrite_4k: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=32 ... fio-3.21 Starting 16 processes randwrite_4k: (groupid=0, jobs=16): err= 0: pid=19242: Tue Oct 7 15:48:56 2025 write: IOPS=548, BW=2195KiB/s (2248kB/s)(1288MiB/600642msec); 0 zone resets slat (usec): min=2, max=418681, avg=27448.68, stdev=40518.68 clat (usec): min=206, max=5943.6k, avg=905118.98, stdev=380943.05 lat (usec): min=262, max=6004.2k, avg=932567.88, stdev=388990.86 clat percentiles (msec): | 1.00th=[ 121], 5.00th=[ 321], 10.00th=[ 451], 20.00th=[ 600], | 30.00th=[ 709], 40.00th=[ 802], 50.00th=[ 894], 60.00th=[ 986], | 70.00th=[ 1083], 80.00th=[ 1200], 90.00th=[ 1351], 95.00th=[ 1485], | 99.00th=[ 1854], 99.50th=[ 2232], 99.90th=[ 3473], 99.95th=[ 4010], | 99.99th=[ 5201] bw ( KiB/s): min= 544, max= 5928, per=100.00%, avg=2197.47, stdev=51.55, samples=19174 iops : min= 136, max= 1482, avg=549.37, stdev=12.89, samples=19174 lat (usec) : 250=0.01% lat (msec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.02% lat (msec) : 100=0.64%, 250=2.64%, 500=9.47%, 750=21.86%, 1000=26.79% lat (msec) : 2000=37.86%, >=2000=0.70% cpu : usr=0.01%, sys=0.03%, ctx=180859, majf=0, minf=221 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=99.8%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, >=64=0.0% issued rwts: total=0,329672,0,0 short=0,0,0,0 dropped=0,0,0,0 latency : target=0, window=0, percentile=100.00%, depth=32 Run status group 0 (all jobs): WRITE: bw=2195KiB/s (2248kB/s), 2195KiB/s-2195KiB/s (2248kB/s-2248kB/s), io=1288MiB (1350MB), run=600642-600642msec Disk stats (read/write): sdb: ios=61/329628, merge=0/25, ticks=37638/151779771, in_queue=151652574, util=100.00% [root@localhost 20251007_152848]#
10-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值