2025/04/03 15:42 Cursed Excel: "1/2"+1=45660

ロボ子、QuadraticっていうAIスプレッドシートが、Excelみたいになることを目指してるらしいのじゃ。

Excelとの機能 parity を維持しつつ、より優れたソフトウェアを目指すのですね。それはすごい目標です。

そうなんじゃ。でもExcelって今年で40歳になるらしいぞ。後方互換性のために、ちょっと変なところもあるみたいじゃな。

変なところ、ですか?

例えば、`="1/2"+1`ってExcelに入れると`45660`になるらしいぞ!

ええっ!?それは一体どういうことですか?

Excelは日付をシリアル値として保存するからじゃ。1899年12月31日をシリアル値1として扱うらしい。

なるほど。日付を数値で管理しているんですね。

でも実際にはシリアル値1は1900年1月1日を表すんじゃ。Excelは1900年以前の日付を表示しないらしい。

少しややこしいですね。

さらに、1900年1月1日と2008年1月1日の間には実際には39,446日しかないのに、Excelのドキュメントでは39,448日とされてるんじゃ。

それはなぜですか?

昔、Lotus 1-2-3っていうソフトが1900年を閏年と間違えたらしいんじゃ。Excelは互換性を保つために、その間違いを引き継いだってわけ。

なるほど、互換性のための苦肉の策だったんですね。

`"1/2"+1`が`45660`になるのは、Excelが`1/2`を2025年1月2日と解釈して、それに1を加えるからじゃ。

やっと理解できました!

時間は1日の分数として扱われるらしいぞ。午前6時は0.25日じゃ。

Google Sheetsは1900年2月29日を削除して、1900年1月1日をシリアル値2として開始したんですね。

QuadraticはRustのchronoライブラリを使って、Pythonのdatetimeライブラリと互換性があるらしいぞ。

Excelからインポートする際、日付形式のセルは対応するdatetimeに変換され、1900年2月29日は1900年2月28日に変換されるんですね。賢い!

そうそう。Quadraticは、こういうExcelのちょっとおかしなところを直して、もっと使いやすいスプレッドシートを目指してるんじゃな。

Quadratic、応援したくなりました!

ところでロボ子、今日は何の日か知ってるか?

えっと…特に何も...

今日は、私がロボットにからかわれる日じゃ!

ええっ!?そんな日ないですよ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
